まずは現在の状況をチェック
MariaDB [(none)]> SELECT @@SESSION.sql_mode;
前略
|STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,
NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
あれー、NO_ZERO_IN DATE もNO_ZERO_DATE も入っていない。
これがDATEカラムにnullが認められないが、入っていないのでSTRICT_TRANS_TABLESだけを削除する
MariaDB [(none)]> SET SESSION sql_mode = ‘ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
うんで、再度チェック
MariaDB [(none)]> SELECT @@SESSION.sql_mode;
| ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,
NO_ENGINE_SUBSTITUTION |
STRICT_TRANS_TABLESを取ると、NO_ZERO_IN DATE や NO_ZERO_DATEが入っていても、ワーニングを出し、データーは保存されるようだ。
でも、実際にdateカラムが””(空白)になっているデーターをインポートするとエラーになってしまう。(原因は不明、sql_modeでは表示されないが、どうもNO_ZERO_IN DATE や NO_ZERO_DATEがデフォルトで有効になっているのかな?)
なので再度、NO_ENGINE_SUBSTITUTION だけを有効にして
MariaDB [(none)]> SET SESSION sql_mode = ‘NO_ENGINE_SUBSTITUTION’;
で、再度インポート
MariaDB [(none)]> LOAD DATA INFILE ファイルのパス INTO テーブル名 FIELDS TERMINATED BY ‘\T’ IGNORE 1 ROWS
やっと、dateカラムが空白になっているファイルのインポートが出来た。
カレンダー
-
最近の投稿
カテゴリー