16進ダンプでも心配なMySQL

さすがに16進なら大丈夫だろうと思っていたら、他のサーバへデータを移動する為にインポートしようとしたら

ERROR 1054 at line 98603: Unknown column ‘0x’ in ‘field list’

このようにエラーを吐いて処理が止まった。
結局どんな吐き出し方をしたのだろうと確認すると、元のDBでは空文字(NULLでは無い)状態になっている文字列フィールドでダンプ時に0xのみ出力されていました。

NULLであれば
VALUES(NULL,NULL,NULL);
という感じになるところが空文字だと
VALUES(0x,0x,0x);
となっていました。終端文字を吐き出さない仕様だからこうなるのでしょうが、同じバージョンのMySQLならインポートも対応しろよって思いました。

結局空文字はNULLでも良かったのでテキストエディタで置換してインポート終了しました。どうしても空文字で入れたいのであれば0xを”に置換してもいいですね。

使用したバージョン:4.0.26

phpMyAdmin で Parse error

PHP Parse error: syntax error, unexpected T_STRING, expecting ‘)’ in /usr/local/apache/htdocs/phpMyAdmin/lang/japanese-euc.inc.php on line 19

phpをインストールするときに–enable-zend-multibyteオプションをつけていると上記のようなエラーが発生する。今まで気が付かなかったが既存サーバに導入しても真っ白で表示されないから調べたらこんな始末でした。。。

参考:
PHP5.1.1
phpMyAdmin2.8.0.2
MySQL4.0.26

MySQLの文字を16進数でダンプ

以前から、BINARY属性のついた文字列をダンプすると得体の知れない化け文字になって他のバージョンにインポートできないなど苦労したので16進数でダンプしてくれるオプションを見つけました。

–hex-blob

です。何故かコマンドヘルプにも出てこないので探すのに苦労した…。