MovableType7の記事インポートでエラーが出たお話。

古いMTの記事を新しいMTにお引越しがしたい。

mt5をmt7に移設するらしい。

移設先でmt7にバージョンアップしてからテンプレートの修正が入っていたのでさぁ大変。

バージョンが二つも古いのに無事にインポートできるのか!?

marcodiの挑戦が今始ま

インポートの途中でエラーが発生しました : 状態は正しくありません 。インポートファイルを確認してください。

 

Failed to execute INSERT INTO mt_entry (entry_allow_comments, entry_allow_pings, entry_atom_id, entry_author_id, entry_authored_on, entry_basename, entry_blog_id, entry_category_id, entry_class, entry_comment_count, entry_convert_breaks, entry_created_by, entry_created_on, entry_excerpt, entry_keywords, entry_modified_by, entry_modified_on, entry_ping_count, entry_pinged_urls, entry_status, entry_tangent_cache, entry_template_id, entry_text, entry_text_more, entry_title, entry_to_ping_urls, entry_unpublished_on, entry_week_number, entry_current_revision) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) with allow_comments, allow_pings, atom_id, author_id, authored_on, basename, blog_id, category_id, class, comment_count, convert_breaks, created_by, created_on, excerpt, keywords, modified_by, modified_on, ping_count, pinged_urls, status, tangent_cache, template_id, text, text_more, title, to_ping_urls, unpublished_on, week_number, current_revision: DBD::mysql::st execute failed: Incorrect string value: '\xF0\x9F\x99\x84</...' for column 'entry_text'

アッハイ

まず①について考える。


原因となる箇所を特定する

エクスポートしたファイルを開いて紐解く。

AUTHOR: foo

TITLE: くさなぎきょう
BASENAME: foo_111
STATUS:
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 1
DATE: 10/19/2030 05:06:16 AM
-----
BODY:
ボディがお留守
-----
EXTENDED BODY:
ボディががら空き
-----
EXCERPT:

-----
KEYWORDS:

-----

COMMENT:
AUTHOR: comment_user
EMAIL:
IP: 127.0.0.1
URL:
DATE: 10/19/2030 06:06:16 AM
コメントがあればCOMMENT:~↓の-----まで
1コメントとして取り扱われる
-----

-----
--------

mt5ではこのブロックが何個も縦に連なった状態でエクスポートされます。

ではエラーが出た記事はどうなってるか。

AUTHOR: foo

TITLE:
BASENAME: foo_111
STATUS:
ALLOW COMMENTS: 1
CONVERT BREAKS: __default__
ALLOW PINGS: 1
DATE: 12/31/2012 11:42:45 PM
-----
BODY:

-----
EXTENDED BODY:

-----
EXCERPT:

-----
KEYWORDS:

-----

-----
--------

下書きを作ってすぐ放置されたものと思われる。

AUTHOR: foo

TITLE:
BASENAME: foo_111
STATUS: Draft
ALLOW COMMENTS: 1
CONVERT BREAKS: richtext
ALLOW PINGS: 1
DATE: 12/31/2012 11:42:45 PM
-----
BODY:

-----
EXTENDED BODY:

-----
EXCERPT:

-----
KEYWORDS:

-----

-----
--------

mt7で下書きをエクスポートするとこの通り。

STATUSに値が入っていないないとエラーになります。

このあたりはバージョンアップで変わったのかもしれませんね。


原因解消にあたる

この下書きがいらないならそのブロックを消してしまってOK。

下書きを残す場合はSTATUS: Draftとしてしまうと良いでしょう。

まずはエディタで修正したインポートファイルを開き、改行コードをLFにする。

改行コードをLFにする。

改行コードをLFにする。

改行コードをLFにする。

改行コードが異なると正常に読み込んでくれません。

正規表現込みでgrepをかけて該当箇所を適宜解消していく

STATUS: \n

あとはインポートするだけ!

次に②


原因となる箇所を特定する

エラー文言からはインサートエラーであるのが伺えます。

インポートテキストから該当記事をみると

🙄

これ。


原因解消にあたる

今回MySqlでの作業になりますが、顔文字をデータベースに登録するには設定を変更する必要あり。

雑な誘導ではありますが、以下の記事がとても参考になります。

MySQL5.5で🍣絵文字🐟を挿入/検索する

以上、お役に立てましたら幸いです。

備考

最期までインポートしてるのにエラーの出るファイルがあるのナンデ???

→原因不明、そもそも改行コードを変えると正常に取り込まず終了する。。

凡ミスっぽいけどどうなんだろう

記事消す量が多いとtimeoutしちゃうナンデ????

→DB設定の変更で解決します