1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WordPressのDBカラム追加でsql_modeを修正しても#1067 – Invalid default value for 'post_date' を解消できなくて頑張った話

Posted at

#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を使えません。sudosu -もコマンド効きません。
my.cnfを書き換えようと思いましたがread onlyです。辛い。

問題カラムのdefault0000-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;
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?