MySQL

事前にデータ投入をした MySQL Docker イメージを作る場合は /docker-entrypoint-initdb.d を活用すると便利

事前にデータ投入をした MySQL Docker イメージが必要になり,最初は「Dockerfile で頑張る感じかなぁ...」なんて考えながら調査をしていたら,公式の MySQL Docker イメージに「カスタムスクリプトを実行する機能」が用意されていることを知って,全て解決…

mysqldiff を使って継続的に MySQL のデータベーススキーマの差分をチェックする

最近,環境ごとのデータベーススキーマの差分をチェックする機会があった.プロダクション環境とステージング環境ならまだしも,開発環境だと検証のために追加したインデックスがそのままになっていたり,開発が途中で止まってしまって日の目を見ることがな…

Docker で MySQL 5.7 を動かして新機能 JSON 型を試してみた

MySQL 5.7 の新機能を見たらあまりにも多くて驚いたけど,簡単に動かしてみようと思って,今回は新たに追加された JSON 型を試してみた. Complete list of new features in MySQL 5.7 Docker で MySQL 5.7 を動かす Docker Hub に書いてある手順の通りにコ…

migration_comments + annotate で MySQL のカラムコメントを管理する

今まで MySQL のカラムにコメントを付ける習慣がなかったんだけど,いざ新メンバーとして既存コードを読んで理解する立場になってみると,ちゃんと書かれたコメントのおかげでスキーマを理解しやすかったし,メンバー間の認識相違も生まれないし,重要だなと…

mycli が便利過ぎる

最近流行っているという噂の mycli を使ってみた.快適! MySQL に関してはあまり GUI を使う習慣がなくて,今までも MySQL CLI を使ってたので,mycli に完全に切り替えた. mycli まぁ複数のテーブルを見ながら試行錯誤するときは Sequel Pro を使うと思う…

standalone-migrations でデータベースをマイグレーション管理にする

非マイグレーション管理で,さらに Rails の規約に則ってないような,サービス稼働中の既存データベースをこれからマイグレーション管理にする方法を考えていて,standalone-migrations っていう Gem が良さそうだったので試してみた.基本的には GitHub の …

MySQL で kill したプロセスが Killed のまま残ってしまう

MySQL でちょっと重めのデータをロードしたら全然返ってこなくなったので,いったん止めて,改めてクエリを投げたら以下のエラーが出た. ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction show processlist して,ゴーストにな…

MySQL WorkbenchでSQLに勝手にLIMITが付く

MySQL Workbench で SQL 投げたら,結果が期待通りじゃなくて,調べてみたら SQL に勝手に LIMIT 0, 1000 って付いてた! そういうデフォルト設定みたいで,Preference で Limit Rows のチェックを外してしえばOK!ドキュメントにもちゃんと書いてあった. M…