Can't upgrade Simple Pages and Exhibit builder after Omeka upgrade

I’m working with the University Archives at Drew University. We’d set up an Omeka 2.2.2 instance (CentOS 6.x) about a year and a half ago, and they’ve been experimenting with it. Before making it live, we wanted to move it to a new server. Once moved and upgraded to 2.4.1, Exhibit Builder and Sample Pages each generate an error when trying to update. I’m appending the actual error messages below.

We’re migrating it to the new CentOS 7 server (running MySQL Community 5.7.14 and PHP 5.6.24). I’ve tried it two ways:

  1. Combining the server migration and upgrade into one step, upgrading the database on the new server and then attempting to upgrade the plugins

  2. Performing a server migration using 2.2.2, making sure Omeka 2.2.2 works fine on the new server (which it does). After that, I followed the upgrade instructions at https://omeka.org/codex/Upgrading - including deactivating the plugins before the upgrade. The database upgrades just fine once the new version is in place. At that point I go to the plugins page, and see that new plugins are available, click on the button, and get an error. I’ve pasted the errors for each below.

Any suggestions? Thank you!

exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli statement execute error : Invalid default value for 'added'' in /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Statement/Mysqli.php:214
Stack trace:
#0 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Statement.php(303): Zend_Db_Statement_Mysqli->_execute(Array)
#1 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 [internal function]: Zend_Db_Adapter_Abstract->query('ALTER TABLE `om...')
#3 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Db.php(79): call_user_func_array(Array, Array)
#4 /var/www/omeka.drew.edu/html/omeka/plugins/ExhibitBuilder/functions.php(275): Omeka_Db->__call('query', Array)
#5 /var/www/omeka.drew.edu/html/omeka/plugins/ExhibitBuilder/functions.php(275): Omeka_Db->query('ALTER TABLE `om...')
#6 [internal function]: exhibit_builder_upgrade(Array)
#7 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Plugin/Broker.php(145): call_user_func('exhibit_builder...', Array)
#8 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Plugin/Installer.php(99): Omeka_Plugin_Broker->callHook('upgrade', Array, Object(Plugin))
#9 /var/www/omeka.drew.edu/html/omeka/application/controllers/PluginsController.php(237): Omeka_Plugin_Installer->upgrade(Object(Plugin))
#10 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Action.php(516): PluginsController->upgradeAction()
#11 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('upgradeAction')
#12 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#13 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#14 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()
#15 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Application.php(79): Zend_Application->run()
#16 /var/www/omeka.drew.edu/html/omeka/admin/index.php(28): Omeka_Application->run()
#17 {main}

-------------------------------------------------

exception 'Zend_Db_Statement_Mysqli_Exception' with message 'Mysqli statement execute error : Invalid default value for 'inserted'' in /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Statement/Mysqli.php:214
Stack trace:
#0 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Statement.php(303): Zend_Db_Statement_Mysqli->_execute(Array)
#1 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 [internal function]: Zend_Db_Adapter_Abstract->query('ALTER TABLE `om...')
#3 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Db.php(79): call_user_func_array(Array, Array)
#4 /var/www/omeka.drew.edu/html/omeka/plugins/SimplePages/SimplePagesPlugin.php(155): Omeka_Db->__call('query', Array)
#5 /var/www/omeka.drew.edu/html/omeka/plugins/SimplePages/SimplePagesPlugin.php(155): Omeka_Db->query('ALTER TABLE `om...')
#6 [internal function]: SimplePagesPlugin->hookUpgrade(Array)
#7 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Plugin/Broker.php(145): call_user_func(Array, Array)
#8 /var/www/omeka.drew.edu/html/omeka/application/libraries/Omeka/Plugin/Installer.php(99): Omeka_Plugin_Broker->callHook('upgrade', Array, Object(Plugin))
#9 /var/www/omeka.drew.edu/html/omeka/application/controllers/PluginsController.php(237): Omeka_Plugin_Installer->upgrade(Object(Plugin))
#10 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Action.php(516): PluginsController->upgradeAction()
#11 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('upgradeAction')
#12 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#13 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#14 /var/www/omeka.drew.edu/html/omeka/application/libraries/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()

This is an incompatibility with MySQL 5.7.

Those two plugins actually have upgrades to fix the problem (which results from MySQL 5.7 being stricter about what it allows for default date values). Despite this, the upgrade can fail if it doesn’t happen first, before any other changes to the same table are made. The upshot is that the problem only occurs on a MySQL 5.7 server and when you’re moving several plugin versions up at once.

We can fix the upgrade process for those plugins to avoid this problem by making them fix the default date values first before moving on to other things.

Thanks! I ended up altering our server provisioning playbook to push a new VM out with MySQL 5.6 - worked fine. We’ve got it moved and up to v2.4.1