Mysql 8.0-ヒントデフォルト期間フォーマット'0000-00-00 00 00:00'エラー

1258 ワード

CREATE TABLE IF NOT EXISTS actor(actor_id smallint(5)NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL, last_name varchar(45) NOT NULL, last_update timestamp NOT NULL DEFAULT (datetime('now','localtime')));
今last_updateの後にcreateという名前の列を追加しました.date,タイプはdatetime,NOT NULL,デフォルト値は'0000 00:00:00'
MySql 8.0にコードを入力:
alter table actor add column create_date datetime not null default '0000-00-00 00:00:00';
エラーを報告し、デフォルトの期間フォーマット'000-00-00 00 00:00'にエラーがあることを示します.
解決策:
1) select @@sql_mode; --グローバルsql_の表示modeの値
結果は次のとおりです.
ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, 
ERROR_FOR_DIVISION_BY_ZERO, and NO_ENGINE_SUBSTITUTION 

そのうちNO_ZERO_IN_DATE, NO_ZERO_DATEの2つのオプションは、0000という日付と時間を禁止しています.
そこでmysqlのプロファイルでsql_を再設定mode、この2つを除けばいいです.
 
2)SET[SESSION|GLOBAL]sql_を使用mode='modes'構文再設定sql_mode値
set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

3)MySQLの再起動
注意:SESSION(デフォルトオプション):現在のコールバックで有効であることを示します.GLOBAL(MySqlを再起動する必要がある):グローバルに有効であることを示す
 
参考記事:
https://www.jb51.net/article/155009.htm