LoginSignup
1
0

More than 5 years have passed since last update.

blobデータをsqliteからMySQLへ移行する際に気をつけること

Posted at

備忘録かつ雑です。

sqliteはバイナリをダンプできない

SQLiteにはダンプのコマンド .dump がありますが、こいつがバイナリを吐いてくれない。

なので適宜移行スクリプトをちょろっと書きましょう。

blobにデータを入れようと思うとエラーになる

適当に作った移行スクリプトを動かすと MySQL server has gone away と言われて途中で死ぬ。

原因は簡単で、設定で特定のサイズ以上のSQLは実行できないようになっている。

設定するキーは max_allowed_packet なので設定ファイルを修正、またはRDSのパラメータグループを修正する。
今回のアプリケーションでは画像を扱っていて5Mが上限なので5 * 1024 * 1024を設定。

MySQLのblob型は小さい

SQLiteのDDLを移行してBLOBのままテーブルを作成した後、画像データを投入して表示してみると画像データが壊れている。

原因はMySQLのblob型は最大65535バイトだから。

MEDIUMBLOBが16777216、LONGBLOB が4294967295なので環境に合わせて適宜DDLを変更してテーブルを再作成。

移行スクリプトを実行中にプロセスが死ぬ

いきなり強制終了とか画面に表示されていきなり死ぬ。OOM killerの仕業です。
(多分t2.nanoを使ってるせいもあると思う)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0