mysql

mysql で lower_case_table_names=0 で作ってしまったテーブルを lower_case_table_names=1 用にリネームする

lower_case_table_names=0 の時に mysql DBNAME -e "show tables" -NB|ruby -p -e '$_.sub!(/.*$/){|a| "RENAME TABLE #{a} TO #{a.downcase};" }'|mysql DBNAMEすると全部小文字になるので、それから lower_case_table_name=0 する。システム用テーブル以外…

既存のカラムのCHARACTER SETを全部utf8mb4に変更する

utf8 → utf8mb4 とか! 既存のフィールドが100とかあったりするとちまちまやってられないのでsqlを生成する。まずこうして ALTER DATABASE hogedb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; それから mysqldump -d hogedb |grep -E ' CHARACTER SE…

ROW_NUMBERのようなことをする

オラクルにはROW_NUMBERという関数があるらしい。SELECTした表の行番号が取れるようだ。MySQLでは変数を使うと同じようなことができる。 SET @r=0; SELECT (@r:=@r+1) as row, * FROM `users`; こんなかんじ。変数なんて初めて使ったよ。