My MySQL Server (Windows 2008 Server で PDO を介して PHP で実行) は、列に許可されているよりも長い文字列を挿入すると、エラー コード 1406 (データがフィールドに対して長すぎます) を返します。問題は、厳密モードでない場合、MySQL が通常データを切り捨てることをどこかで読んだことです。my.ini の sql_mode を変更して、起動時にも厳密モードに入らないようにしましたが (現在は "")、それでもエラーが発生してロールバックするため、データが失われます (切り捨てはサイトの望ましい動作)。
コマンドラインに入力し、短い varchar フィールドに長い文字列を挿入すると、データが切り捨てられて保存されますが、そうでないのはサイトです。モードを厳密に戻すと、コマンドラインで切り捨てられませんでした (エラーのみ)。
また、サイト出力をグローバルとセッションの両方の現在のSQLモード(@@GLOBAL.sql_modeと@@SESSION.sql_mode)にしましたが、両方とも「」を出力しましたが、希望どおりに機能しませんでした。
これの原因や変更方法を知っている人はいますか?
私の疑いは、PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION で有効化された PDO に関係している可能性があるということですが、読んだところ、それについて役立つものは何も見つかりませんでした (これが間違いなく説明だとは思いませんが、問題についてできるだけ多くのことを知ってもらうために、これを公開しているだけです)。
どうもありがとうございました