揮発性のメモ2

http://d.hatena.ne.jp/iww/

MySQL

複数カラムでユニークキーを作る

複数カラムでユニークキーを作りたいとき、重複があるとエラーになる mysql> ALTER TABLE hoge ADD UNIQUE (a,b,c); ERROR 1062 (23000): Duplicate entry 'aiueokakikukekoaaaaa' for key 2 IGNOREをつけると、重複したカラムは最初の分だけ採用されて正常…

show variables like "char%";

mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | ujis | ○ ● | character_set_connectio…

MySQLの予約語のようなもの

mysqldumpするとき、--skip-quote-namesオプションをつけてもクォートされる文字列がいくつかあるっぽい。 CREATE TABLE recvlog ( `time` timestamp NOT NULL default CURRENT_TIMESTAMP, `no` int(11) NOT NULL, `data` blob, `date` datetime default NUL…

MySQL server has gone away

コネクションをオープンして放置していると、一定時間でセッションが切られてしまう。 システム開発の備忘録 | MySQL - sleepプロセスが溜まる MySQL のコネクションタイムアウトと削除されたプロセスのコネクションの残留 | さくらたんどっとびーず set-va…

mysqlの文字コードをEUC-JPにする

EUC-JPの時代に作ったプログラムをUTF-8なサーバに移植するときとか用。 /etc/sysconfig/i18n の設定 可能ならシステム全体をEUC-JPに統一する。 LANG="ja_JP.EUCJP" /etc/my.cnf の設定 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock …

PDOでバインドし忘れた変数

文字列のカラムを数値と比較すると、文字列は自動的に数値にキャストされる。 だいたいは 0扱いになるので 0と比較することになり、マッチしてしまう。 1 Prepare [1] SELECT * FROM hoge WHERE str=? 1 Execute [1] SELECT * FROM hoge WHERE str=0 PDOでバ…

OracleでLIMITを実装する

OracleでMySQLのLimit句みたいのをやる。 (Study02.net) MySQLとかにあるLIMITをなるべく原型を留めてOracle用に書き換える SELECT a,b,c FROM hoge ORDER BY a LIMIT 10,20; ↓ SELECT * FROM ( SELECT rownum rnum, tmpt.* FROM ( SELECT a,b,c FROM hoge O…

PDOでクエリに同じ変数が何回も出てくるとき

$sql='SELECT * FROM user_table WHERE uid=:uid OR child_uid=:uid'; $sth = $dbh->prepare( $sql ); $sth->execute( array('uid'=>$uid) ); こんな感じで同じパラメータを使いまわすことは出来ない。 このまま実行すると後ろの方のパラメータは0とか''の扱…

グループの数を数える

× SELECT COUNT(*) FROM hogelist GROUP BY hid; ○ SELECT COUNT(DISTINCT hid) FROM hogelist;

レプリケーションが動作していない

> SHOW SLAVE STATUS\G Slave_IO_State Connecting to master Master_Host 192.168.0.131 Master_User test Slave_IO_Running No Slave_SQL_Running Yes Slave_IO_Running が No なので、動作していないのは確定的に明らか Slave_IO_State がずっと Connecti…

PDOで文字化け 解消

定番の SET NAMES 'utf8'; 接続時に自動的に打たせるときには [mysqld] に追記するとよい default-character-set = utf8 init-connect = "SET NAMES 'utf8'"参考にさせていただいたページ:http://hain.jp/index.php/tech-j/2007/09/18/p167