WordPress mySQLデータベース インポートにてエラーが発生する原因は、目に見えない制御コード(バックスペースの0x08)が原因だった

先日書いた、WordPressデータベースのインポートでエラーが発生した現象の記事ですが、圧縮形式が違うとエラーを回避できたことに、なんだか釈然としない感覚でした。

エラーを起こす問題の本質は、圧縮形式ではないことがわかりました。

データベースの文字列の中に「目に見えない文字が混入している」ことが原因でした。Macの一部環境で起きてしまう「見えない文字が文章に混ざるトラブル(バグ)」が、サーバーを移すときのデータベース インポートで、トラブルを呼んでしまう様子です。

気づいたのは偶然だった

インポートエラーが起きることをブログ記事に書いたあと、iPhoneのブログアプリ PressSyncからブログ記事一覧を取得しようとしたところ失敗するようになりました。

このトラブルは、記事文章の中に入ってはいけない「制御コード」が混入している状況で起きるトラブルです。

このトラブルについては詳しくはこちらの記事にまとめています。

「あっ!」と、この時に気付きました。

データベースに「入ってはいけない制御コード」が入っているため、インポートでエラーが発生したのです。

目に見えないバックスペースの制御コード

入ってはいけない制御コードが混入するバグは、MacのYosemite環境などで発生します。

困るのが、通常だと目視で見つからないのです。エディタのmiを使うと、隠れている制御コードを表示することができます。

エラーになっているデータをmiで確認したところ、 1F と 08 と、赤色の文字が隠れているのが見つかりました。

これを除去するのは大変

本当はこの制御コードを除去してから、データベースにインポートを行うのが本来の対策になると思います。手作業で確認するため大変です。

とりあえず、インポートでZip圧縮形式を選ぶと、インポートできましたが、入っているとトラブルになる制御コードが混入したままの状態です。

一括でチェックする方法を探す必要があります。

この見えない制御文字が混ざることで、よく発生するのが、iPhoneアプリ するぷろ や PressSync にて記事一覧が取得できなくなるトラブルです。これについて、原因と対策をまとめているのがこちらの記事です。

この記事を書いた人