備忘録かつ雑です。
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を使ってるせいもあると思う)