#1067 – Invalid default value for 'post_date'
WordPressのDBにカラムを追加しようとしたらエラーが出ました。
解消法をいくつも探して試しましたが、簡単に解決できなかったので記録を残します🙇♂️
#sql_modeのNO_ZERO_DATE
を無効にするSQLが通らない
SHOW VARIABLES LIKE 'sql_mode';
多くのサイトで紹介されているsql_modeの設定を変えれば解消します!という対応を実行してみましたがユーザー権限が足りず、クエリを投げてもWarningが出て終わり、となってしまいました。
rootユーザーのパスワードは知りません、、、
my.cnf
の書き換えもできない
サーバーログインのユーザーもrootを使えません。sudo
もsu -
もコマンド効きません。
my.cnf
を書き換えようと思いましたがread onlyです。辛い。
問題カラムのdefault
を0000-00-00 00:00:00
から変更してしまう
デフォルト値が0000-00-00 00:00:00
となっているカラムが問題です。ゼロ埋めが入らないようにしてあげればOK。
0000-00-00 00:00:00
のカラムが複数ある場合、one linerクエリでデフォルト値を変更してあげないとエラーになる!
↓こんな風に、別々クエリを叩くと、1つ目のクエリ実行時に「default値に(別の)0埋めカラムがあるから更新できないよ!」とエラーが出てしまう。
2つ目のカラムのdefault値変更を先に実行しようとすると1つ目のカラムのdefault値0埋めでエラーが出るから堂々巡り。
誤
alter table wp_posts MODIFY COLUMN post_date datetime not null default '1000-01-01 00:00:00';
alter table wp_posts MODIFY COLUMN post_date_gmt datetime not null default '1000-01-01 00:00:00';
↓まとめて流せばOK!
正
alter table wp_posts MODIFY COLUMN post_date datetime not null default '1000-01-01 00:00:00',
MODIFY COLUMN post_date_gmt datetime not null default '1000-01-01 00:00:00',
MODIFY COLUMN post_modified datetime not null default '1000-01-01 00:00:00',
MODIFY COLUMN post_modified_gmt datetime not null default '1000-01-01 00:00:00',
add column publication_date int;