MySQL4.xでは大丈夫だったけど、MySQL5.xに移行してから起こった出来事。 整数型カラムをUNSIGNEDして利用している時、負の数にならないのをいい事に0から減算して負の数の場合は0と自動で処理してくるものだと思っていた。(MySQL4.x時にはそのように処理されていた。) 本当はプログラム側で処理するべきなのかもしれないけれど、楽してそのようなスクリプトを書いていた。 で、先日MySQL5.xの環境に移行したらデータがおかしくなっていた。 とてつもなく大きな数字となっており???状態。 どうやら、UNSIGNEDしているカラムが0で、そこから1を引くと4294967295のような […]
2013-01-13追記 MySQL対応のPostfixはCentOS Plusリポジトリを使えばyumでupdate出来るみたい。こっちの方がいいね。 CentOS Plusリポジトリを有効にする # vi /etc/yum.repos.d/CentOS-Base.repo [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus #baseurl=http://m […]
MySQLのDATETIME型へインデックスをつける場合注意が必要。 例えばこんなSQLではインデックスが使用されない。 SELECT * FROM table WHERE datetime LIKE '2009-05-17%' 検索結果は2009-05-17分全てが抽出されるが、フルスキャンがかかる。 この場合、以下のようなSQLが良い。 SELECT * FROM table WHERE date_time BETWEEN '2009-05-17' AND '2009-05-17' + INTERVAL 1 DAY 実行時間計測の例 行数:13,776行 データ:2,935KB インデック […]
接続時 my $dbh = DBI->connect('DBI:mysql:database=sandbox;host=localhost;mysql_read_default_file=/etc/mysql/my.cnf',qw/id password/,); または接続後に $dbh->{ mysql_enable_utf8 } = 1; この辺の記事http://www.geminium.com/chiba_blog/2009/02/
phpmyadminインストール yum install phpmyadmin /usr/share/phpmyadmin にインストールされる。 /usr/share/phpmyadmin/config.inc.phpを編集 $cfg['blowfish_secret']を設定。 /* * This is needed for cookie based authentication to encrypt password in * cookie */ $cfg['blowfish_secret'] = '*************'; /* YOU MUST FILL IN THIS FOR […]
MySQL4.12が稼働しているサーバにMySQL5.0.67(Ttitonn)をインストールする(MySQL4.12はYUMでインストール済) my.cnf (MySQL4.12) [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_pa […]
PERLでMySQLにデータを挿入する実験。 実験スクリプト INSERT を100万回繰り返す。 for(1..1000000){ $sql = <<"EOM"; INSERT INTO `table_name` (`col1`,`col2`,`col3`,`col4`) VALUES ('10','11','12','13'); EOM $sth = $dbh->do($sql)|| die $dbh->errstr; } 結果:途中でサーバエラー Server error! The server encountered an internal error and […]
$COUNT = $dbh->selectrow_array("SELECT COUNT(*) FROM `テーブル名` WHERE `カラム` = '条件'");
$sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth = $dbh->prepare( "$sql" ); $sth->execute(); $id = $sth->{mysql_insertid}; これで$idに「自分が追加した最新のauto_increment番号」が代入される ただし下記のようにdoでは使えない。 $sql = "INSERT INTO `db_01` ( data1, data2 ) VALUES ( $data1, $data2 )"; $sth […]
インデックスには、複数の列に対してまとめて設定する複合インデックスという種類がある。検索条件に複数列を指定する場合などでは、単一カラムのインデックスよりも複合インデックスの方が高速な検索を行うことが出来る。 複合インデックスを作成するには、CREATE INDEXを使用。下記では、テーブル名tbl_nameのcol1、col2カラムに、col1and2という複合インデックスを作成する。 CREATE index_name ON tbl_name (col1, col2) 作成した複合インデックスを利用するのに特別な構文はなく、下記のようなSELECT文で複合インデックスが自動的に使われる。 S […]