StaticPressをMySQL5.6の環境で導入しようとしたら詰まった話
WordPressのページをHTML生成できるStaticPressを導入しようとしたところ、
MySQL 5.6を使っていたがためのエラーが出たので、その時のメモです。
まず、StaticPressをインストールして有効化したあとに、
早速StaticPressのページで再構築ボタンを押下しました。
終了とすぐに表示されたのですが、https://blog.mogmet.com/static/にアクセスしてもページが出ませんでした。
おや?と思ってエラーログ見たらこんなエラーが出ていました。
WordPress \xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc: DROP command denied to user ‘ユーザ名’@’ホスト名’ for table ‘wp_urls’ for query truncate table
wp_urls
made by do_action(‘wp_ajax_static_press_init’), call_user_func_array, static_press->ajax_init, static_press->insert_all_url, static_press->get_urls, dbrc_wpdb->query, dbrc_wpdb->dbcr_query, referer: https://blog.mogmet.com/wp-admin/admin.php?page=static-press
※16進数のところは「データベースエラー」と書いてあります。
セキュリティ上の観点からユーザにdrop権限を与えていなかったので、しょうがないのでwp_urlsだけ権限を与えることにしました。
1 |
GRANT DROP on `スキーマ名`.wp_urls TO 'ユーザ名'@'ホスト名'; |
再度、再構築を実施したがまたしてもエラーが発生。
WordPress \xe3\x83\x87\xe3\x83\xbc\xe3\x82\xbf\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xb9\xe3\x82\xa8\xe3\x83\xa9\xe3\x83\xbc: Field ‘file_name’ doesn’t have a default value for query insert into wp_urls (
type
,url
,last_modified
,enable
,create_date
) values (‘static_file’,’/wp-content/uploads/images/phpinfos.jpg’,’2013-07-21 01:45:20′,’1′,’2014-04-19 10:00:21′) made by do_action(‘wp_ajax_static_press_init’), call_user_func_array, static_press->ajax_init, static_press->insert_all_url, static_press->update_url, dbrc_wpdb->query, dbrc_wpdb->dbcr_query, referer: https://blog.mogmet.com/wp-admin/admin.php?page=static-press
確かにテーブル定義をみてもfile_nameはNOT NULLで定義されているのにINSERT文にはfile_nameへのINSERTがありませんでした。
定義がだめなのかなと思いましたがひとつ思い当たる節がありました。
mysql 5.6 はDefault not null のカラムにnullが来た時にエラーを返すが、5.5以下はその型のデフォルト値を入れてくれる。
これだ!!
ということでsql_modeはしょうがなくなくなく5.5への挙動にもどしました。
my.cnfとかに以下を記述してmysqlを再起動します。
1 |
sql_mode='' |
設定項目に書いても反映されない場合は直接sql_modeを書き換えてしまいましょう。
1 |
mysql> set global sql_mode=''; |
確認する場合は以下を実行します。
1 |
mysql> show variables like 'sql_mode'; |
sql_modeの変更ができた後に再構築ボタンを押下したら問題なく動きました。
ちなみにソーシャルボタンなどをおけるプラグインSharebarも似たような挙動だったので、この設定でおそらくうまく追加などができるはずです。
めでたしめでたし。