StaticPressをMySQL5.6の環境で導入しようとしたら詰まった話

公開日:  最終更新日:2014/05/10

WordPressのページをHTML生成できるStaticPressを導入しようとしたところ、
MySQL 5.6を使っていたがためのエラーが出たので、その時のメモです。

sponcer link

 

 

 

まず、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だけ権限を与えることにしました。

 

再度、再構築を実施したがまたしてもエラーが発生。

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を再起動します。

設定項目に書いても反映されない場合は直接sql_modeを書き換えてしまいましょう。

 

 

確認する場合は以下を実行します。

sql_modeの変更ができた後に再構築ボタンを押下したら問題なく動きました。

ちなみにソーシャルボタンなどをおけるプラグインSharebarも似たような挙動だったので、この設定でおそらくうまく追加などができるはずです。

めでたしめでたし。

  • このエントリーをはてなブックマークに追加
  • Pocket
PAGE TOP ↑