2016-09-28 23 views
3

これはエラーです。'SQLSTATE [22007]:予期しない例外' PDOException ':datetime形式が無効です。1366:無効な文字列値

PDOException:メッセージでキャッチされない例外 'PDOException 'SQLSTATE [22007]:無効日時書式:1366不適切な文字列値: 'XF0 \ x9F \ x98 \ XB3文字列' 列の '\' 行で1'

ここで問題がわかります。列テーブルはutf8を使用しています。 utf8エンコーディングは4バイト文字を格納できないため、エラーになります。これを回避する方法は、代わりにutf8mb4を使用することです。

代わりに私の質問は、エラーメッセージです。私たちはMariaDBを使用しています。 エラーメッセージに「Invalid datetime format」と表示されるのはなぜですか?これはテキストフィールドです。実行されているクエリのdatetimeとは関係ありません。

この「無効な日時フォーマット」は、さまざまなエラーに対して頻繁に表示されますが、実際のエラーの原因とは関係がないようです。

+1

あなたの '\ xF0'が与えられていれば、そのフォームに遠く離れていないものも渡しています。実際のクエリを表示していないため、何か手助けすることはできません。 –

+0

Marc B.が言ったこと。 'utf8'でエンコードされた文字列を' datetime'パラメータとして送信しないでください。 – Mjh

+1

このクエリの実行に日付が害されていないと確信しているなら、私たちの生活をより面白くするような奇妙なバグのいくつかを打ったかもしれません。どのように再現可能ですか?あなたは自己完結型の例を提供できますか? –

答えて

2

はい、私は以前これを見ました。

mariadb側のバグだと思います。間違った値のすべてのエラーは、「不正なdatetime値」と呼ばれます。

ちょっと混乱していても、ここには何の害もありません。問題を念頭に置き、mysqlの日付/時刻文字列が `yyyy-mm-dd hh:mm:ss`であるため、「不適切なテキスト値」として扱います。

関連する問題