DBのいくつかの値を変更する必要があります。
テーブルにnullableを設定するのを忘れてしまい、デフォルトで0000-00-0000:00:00に設定されました。
次に、その値をNULL
に変換する必要があります。
フィールドタイプは日時です。
どうすればいいですか?
典型的なUpdate table set field = NULL WHERE field = '0000-00-00 00:00:00';
で試してみましたが、うまくいきません。
最初に列をNULL可能にする必要があります。
ALTER TABLE mytable MODIFY COLUMN field DATETIME NULL;
次に、値を更新します。
UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
MySQL 5.7以降、SQLモードNO_ZERO_DATEでは、最初にこの制限を無効にしない限り、この更新は不可能になります(トランザクションの期間中のみ)。
SET sql_mode=(SELECT REPLACE(@@sql_mode,"NO_ZERO_DATE", ""));
UPDATE mytable SET field = NULL WHERE field = '0000-00-00 00:00:00';
残念ながら、これは機能しません。
にとって:
update episodes set `ending` = NULL
WHERE `ending` = '0000-00-00'
0000-00-00
がwhere句にある場合、次のエラーが発生します。
「1292-日付時刻の値が正しくありません:行1の「終了」列の「0000-00-00」」。
ending
のフィールド定義にNULL
とdefalut=null
がある場合でも。
最初に列をNULL可能にする必要があります。
@ Mysql5.7
間違っています:
update episodes set `ending` = NULL WHERE `ending` = '0000-00-00'
正解:
update episodes set `ending` = NULL WHERE `ending` = 0000-00-00
注:where句の日付値から引用符を削除してください。それが誰かを助けることを願っています