mariadbでdateのカラムにnullを認める mariadb Ver 15.1 Distrib 10.5.27

まずは現在の状況をチェック
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カラムが空白になっているファイルのインポートが出来た。

フジマル について

1947年生れ、東京電機大学二部電気通信工学科卒、最後はスリランカ航空で営業だったのですが2018年に㈱インパック・ジャパンに再就職。趣味:登山、スキー、車いじり、コンピューター
カテゴリー: Linux運用時のメモ パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください