2015年07月23日

mysql5.6にアップグレードしたらユーザー追加できなくなった

mysql> CREATE USER 'hoge'@'localhost' IDENTIFIED BY 'hogepasswd';
ERROR 1054 (42S22): Unknown column 'plugin' in 'mysql.user'

↓これで解決

#mysql_upgrade -u root -p
posted by onishi at 09:55| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2014年03月13日

MySQLでランダム文字列生成

これは便利。
posted by onishi at 12:15| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2013年02月13日

too many connectionsでサーバーダウン

デフォルトの設定は死亡フラグだそうです。

http://chain.main.jp/fm/archives/2006/01/bug_diary_02.html
デフォルトだとMySQLの設定は、
・同時接続数は、100
・待機時間は、8時間


ひとまず今回は、
#vi my.cnf
[mysqld]
max_connections = 512
thread_cache=150
wait_time=60

で設定してみました。


↓参考サイトです。
http://open-groove.net/mysql/seek-mysql-memory/
thread_cache
MySQLは接続終了後のサーバスレッドをいきなり解放せず、次の接続時に再利用
できるようにキャッシュしておける。このため、切断後の再接続時のオーバーヘッド
をより軽減することができるのだ。



posted by onishi at 12:17| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年09月05日

mysqlTIPS



□テーブルと、ストレージエンジンの一覧
mysql>use information_schema;
mysql>select table_name, engine from tables where table_schema = DB_NAME;


なかなか面白いです。
InnoDBの主キーはクラスターインデックスだということを意識しよう


更新があるシステムにはInnoDBを選ぼう。MyISAMを選択するならそれなりの理由が必要。それにInnoDBのパフォーマンスはそんなに悪くないよ。
posted by onishi at 10:18| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年08月04日

データベースの移行

みんまちのサーバーを移行中

アクセス伸びてきてます。
訪問者が300ほど、ページビューが1000ほど。
なのにロードアベレージが2を超えるっていう緊急事態。
作り方や、mysqlの設定が悪いのかもしれない。
それも見直すつもり。

さて、データベースの移行を行います。

エクスポート
mysqldump -u ユーザー名 -p DB名 > バックアップファイル名
インポート
mysql -u ユーザー名 -p 新DB名 < バックアップファイル名

でOK

指定したテーブルのみ移行する場合は
エクスポート
mysqldump -u ユーザー名 -p DB名 テーブル名1 テーブル名2 > バックアップファイル名
※-tオプションをつけるとinsertのみになる

インポートの場合は普通と同じ
インポート
mysql -u ユーザー名 -p 新DB名 < バックアップファイル名
以上
posted by onishi at 15:03| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年06月04日

テーブルが存在するなら削除、しないなら何もしないSQL文

DROP TABLE IF EXISTS tbl_name;
ね。
一時テーブルだと
DROP TEMPORARY TABLE IF EXISTS tbl_name;

参考
http://dev.mysql.com/doc//refman/4.1/ja/drop-table.html


posted by onishi at 15:20| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年05月28日

MySQLのチューニング

MySQLを高速化したいときのチューニング方法

を参考に
1、my.cnf を編集
vi /etc/my.cnf
[mysql]
long_query_time=3
log-slow-queries=/var/log/slow.log


サーバを再起動
/etc/init.d/mysqld restart

確認
show variables like 'log%';


http://d.hatena.ne.jp/MATSU/20110415/1302851350
posted by onishi at 13:55| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年02月17日

MySQLの最適化をする際に必要になるかもしれない知識

今はどうか知らないけれども

基本としては、
1、インデックスの見直し
2、テーブルの最適化(変な設計になっていないかなど)
3、データベースサーバーのグレードアップ

だと思う。

インデックスの最適化には↓かな
http://dev.mysql.com/doc/refman/5.1/ja/mysql-indexes.html

落ちだしたら見直そう。
posted by onishi at 18:32| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年02月04日

mysql のバージョンを調べる

バージョン調べるコマンド
mysqladmin -u ユーザー名 -p version

リスタート
/etc/init.d/mysqld restart
posted by onishi at 13:15| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

mysqlってスペース検索できるんだ。。

http://www.tatamilab.jp/rnd/archives/000389.html#a

http://www.tatamilab.jp/rnd/archives/000390.html


知らなかった〜

自分のブログよく参照するから。
いつかブログのデザインを変更する。



導入メモ
posted by onishi at 12:57| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年02月02日

CSVでエクスポート

http://c-brains.jp/blog/wsg/10/06/16-101352.php

mysql> select * from テーブル名 into outfile "/tmp/書き出しファイル名" fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

で出来た。
注意:mysqlの権限があるフォルダに書き出すこと!

posted by onishi at 14:40| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年01月30日

mysql 現在の接続数の確認

http://thinkit.co.jp/free/article/0707/2/2/
/usr/bin/mysqladmin -u root extended-status | egrep '(Max|Threads)'
posted by onishi at 13:58| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

mysqlでクエリログとコネクションログをとる方法

1.
#locate my.cnf
でmysqlの設定ファイルを探す

vi my.cnf
で編集
[mysqld]
datadir=*****
socket=****
#ここにログファイルの絶対パスで設定
log=/var/log/mydbname.log

[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8

3.ファイルを作ってユーザーをmysql、権限を640にする
touch /var/log/mydbname.log
chown mysql:mysql /var/log/mydbname.log
chmod 640 var/log/mydbname.log

4.リスタート
/etc/init.d/mysqld restart

でログが書き込める。

posted by onishi at 13:20| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2012年01月23日

CSVからインポート

毎度毎度忘れる上に必要になる場合が多いのでメモ。


mysqlimport

を使ったらエラーが出た。
権限がないとか、何とか。

Access denied for user 'aaaa'@'localhost' (using password: YES)

以下よりroot権限でmysqlに入る
http://dev.mysql.com/doc/refman/4.1/ja/default-privileges.html

mysql> mysql -u root DB名
mysql> grant file on *.* to 'aaaa'@'localhost';


で権限作れたはず。


実行してみる
mysql> mysqlimport -u aaaa -p aaaa CSVファイルのフルパス(サーバー上の)
と、エラー
Can't get stat of 'CSVファイルのフルパス' (Errcode: 13), when using table: ****

何でかな〜
http://www.jun2065.net/index.php?mysql%B4%D8%CF%A2%2Fimport%A4%CB%A4%C4%A4%A4%A4%C6
ファイルがローカルにあるってのをつけなきゃいけないらしい。

mysql> mysqlimport -u aaaa -p aaaa -local CSVファイルのフルパス(サーバー上の)

でやっと完成。







posted by onishi at 19:08| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2011年12月28日

mysqlのデータを書き出し(mysqldump )

mysqldump -u ユーザ名 DB名 -p --default-character-set=binary --tables テーブル名 > 20080722_HOGE.sql

http://d.hatena.ne.jp/ichikaway/20080722/1216696390

SNSが通常装備の時代だと思う。
posted by onishi at 15:59| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2011年11月30日

joinしてupdate

http://www.abe-tatsuya.com/web_prog/mysql/update_inner_join.php

update table1
inner join table2 on table1.id = table2.id
set table1.cellname1 = hoge
where table2.cellname2 = 'huga';


■サブクエリからjoinしてupdate
更新対象のテーブルをjoinしてupdateは出来ないらしい。
http://hamamuratakuo.blog61.fc2.com/blog-entry-427.html
そりゃぁそうだよなぁ。


一時テーブルに入れといて、は出来ました。
ちなみに一時テーブルの作り方は
create TEMPORARY table テーブル名
select ....なんちゃら
で作れます。




posted by onishi at 10:41| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

max_allowed_packet(でかいデータ)

今日は膨大な郵便番号データ(13万件程度)をMYSQLにINSERTします。

mysql> show variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+

で、エラーが出た。
データ大きすぎるよ。って

vi my.cnf
を編集
[mysqld]
max_allowed_packet=16MB
の記載を追加してmysqlを再起動

/etc/init.d/mysqld restart


そうするとエラーが出なくなる。

ついでに愚痴ると、mysqlworkbench、バグる。
私が想定外の使い方してるのは承知してる。





posted by onishi at 10:29| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2011年11月14日

MySQLのストアドを使いたい

バッチ処理は
DBixで云々するより、ストアドにしたい。

むかーし、使っていた記憶がある。
便利なんだよなぁ・・

って事で参考サイト。

http://blog.livedoor.jp/sasata299/archives/51180619.html


あと、結合してUPDATE
UPDATE table1
INNER JOIN table2 ON table1.id = table2.id
SET table1.name1 = table2.name1
WHERE table2.cellname2 = 'huga';

SQLいじるの楽しい。
結構数学的。
posted by onishi at 10:13| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2011年08月20日

use base

use base 'CGI';
CGIクラスの継承。

our @ISA = 'CGI';
という書き方もできる。
@ISAは、packageが属する(継承する)クラスを指定するために使用する。

ISAは
A horse is a critter
の略
posted by onishi at 18:18| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

2011年08月02日

複雑なSQL IFとsum

select
sum(IF(wage < '1500' ,'1','0') ) as '1500円以下',
sum(IF(wage > '1499' ,'1','0') )as '1500円以上' ,
sum(IF(wage > '1999' ,'1','0') )as '2000円以上' ,
sum(IF(wage > '2499' ,'1','0') )as '2500円以上' ,
sum(IF(wage > '2999' ,'1','0') )as '3000円以上' ,
sum(IF(wage > '3499' ,'1','0') )as '3500円以上'
from zikyuu

SQL面白い。

CASE構文も使える。

しかしこれをDBIxにどう書くか。

DBIxではCASE構文使えないらしい。
IFでむりくり書こうと思えばかける。

my $row = $schema->resultset('zikyuu')->find(
undef,
{
select => [
{ sum => \'IF(zikyuu.wage < 1500 , 1 , 0 ) ' , -as => 'cun1' },
{ sum => \'IF(zikyuu.wage > 1499 , 1 , 0 ) ' , -as => 'cun2' },
{ sum => \'IF(zikyuu.wage > 1999 , 1 , 0 ) ' , -as => 'cun3' },
{ sum => \'IF(zikyuu.wage > 2499 , 1 , 0 ) ' , -as => 'cun4' },
{ sum => \'IF(zikyuu.wage > 2999 , 1 , 0 ) ' , -as => 'cun5' },
{ sum => \'IF(zikyuu.wage > 3499 , 1 , 0 ) ' , -as => 'cun6' },
],
as => [qw/ cun1 cun2 cun3 cun4 cun5 cun6 /],
join => { 'zikyuu'},
order_by => 'zikyuu.wage DESC',
}
);

my $data;
my %cols = $row->get_columns;
while (my($key,$value) = each(%cols)){
$data->{$key} = $value;
}


これでできた(*^^)v
posted by onishi at 18:35| Comment(1) | mysql | このブログの読者になる | 更新情報をチェックする

SQL Tips

■データ構造の表示
SHOW COLUMNS FROM `テーブル名`;

■MySQLのvarchar(XX)の××は文字数
http://d.hatena.ne.jp/sotarok/20070821/1187707045
posted by onishi at 16:12| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする

PerlでMySQL関係メモ

posted by onishi at 14:12| Comment(0) | mysql | このブログの読者になる | 更新情報をチェックする