This plugin was create to work around a problem caused by certain configurations in MySQL that lead to several odd symptoms including but not limited to:
- Loss of ability to create new posts
- Loss of ability to update posts
- Errors regarding invalid timestamps
- Admin interface reverts to lowest permissions ex:‘Publish’ button says ‘Submit Draft’.
In addition, this problem is often accompanied by an error like the following:
WordPress database error: [Incorrect datetime value: '0000-00-00 00:00:00' for column 'post_date_gmt' at row 1]
INSERT INTO 'mg_posts' ('post_author','post_date','post_date_gmt','post_content','post_content_filtered','post_title',
'post_excerpt','post_status','post_type','comment_status','ping_status','post_password','post_name','to_ping','pinged',
'post_modified','post_modified_gmt','post_parent','menu_order','guid') VALUES (’1′,’2011-08-23 03:32:43′,
’0000-00-00 00:00:00′,”,”,’Auto Draft’,”,’auto-draft’,'post’,'closed’,'open’,”,”,”,”,’2011-08-23 03:32:43′,’0000-00-00 00:00:00′,’0′,’0′,”)
The inability to pass zero dates breaks the ability to actually create a new post, but it also seems to have the odd secondary effect of confusing the heck out of nonces (noces are a security feature), probably because they too rely on timestamps.
This plugin strips out the sql_modes listed below from @@SESSION, thereby eliminating the problem while only effecting database sessions WordPress starts and not the whole database.
- Upload
plugin-name.php
to the /wp-content/plugins/
directory
- Activate the plugin through the 'Plugins' menu in WordPress
Will this fix sql_mode during installation?
No, plugins are not loaded during installation. For alternative solutions see
"Other manifestations, alternative solutions" on the plugin home page
Will this effect other applications that might run on the same database, and depend on these sql_mode settings?
No, it uses @@SESSION.sql_mode to change the settings for each WordPress session individually.
How do I undo what this plugin does?
Just turn off the plugin - because it uses @@SESSION, the changes wont persist.
If you've made other modifications explained in this plugin's documentation, you will have to run similar SQL commands to apply the old settings.