omeka-s-modules/Collecting

Upgrade fails

mebrett opened this issue · 5 comments

On both http://dev.omeka.org/omeka-s and my testomekas install on the same server, upgrading the install results in a very long error message.

Prior to today, I hadn't updated/pulled Collecting on the shared install in a month, and on testomekas it had been uninstalled over the summer.

Error message in full:

Doctrine\DBAL\Exception\NonUniqueFieldNameException
An exception occurred while executing 'ALTER TABLE collecting_prompt ADD resource_query LONGTEXT DEFAULT NULL AFTER select_options': SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'resource_query'

Details:

exception 'PDOException' with message 'SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'resource_query'' in /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:57
Stack trace:
#0 /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(57): PDO->exec('ALTER TABLE col...')
#1 /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(1044): Doctrine\DBAL\Driver\PDOConnection->exec('ALTER TABLE col...')
#2 /websites/omekadev/home/www/omeka-s/modules/Collecting/Module.php(77): Doctrine\DBAL\Connection->exec('ALTER TABLE col...')
#3 /websites/omekadev/home/www/omeka-s/application/src/Module/Manager.php(314): Collecting\Module->upgrade('1.0.0-beta3', '1.0.0-rc.1', Object(Zend\ServiceManager\ServiceManager))
#4 /websites/omekadev/home/www/omeka-s/application/src/Controller/Admin/ModuleController.php(249): Omeka\Module\Manager->upgrade(Object(Omeka\Module\Module))
#5 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(78): Omeka\Controller\Admin\ModuleController->upgradeAction()
#6 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#7 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#8 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(106): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#9 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/DispatchListener.php(138): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#10 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#11 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#12 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Application.php(332): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#13 /websites/omekadev/home/www/omeka-s/index.php(21): Zend\Mvc\Application->run()
#14 {main}

Next exception 'Doctrine\DBAL\Driver\PDOException' with message 'SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'resource_query'' in /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:59
Stack trace:
#0 /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(1044): Doctrine\DBAL\Driver\PDOConnection->exec('ALTER TABLE col...')
#1 /websites/omekadev/home/www/omeka-s/modules/Collecting/Module.php(77): Doctrine\DBAL\Connection->exec('ALTER TABLE col...')
#2 /websites/omekadev/home/www/omeka-s/application/src/Module/Manager.php(314): Collecting\Module->upgrade('1.0.0-beta3', '1.0.0-rc.1', Object(Zend\ServiceManager\ServiceManager))
#3 /websites/omekadev/home/www/omeka-s/application/src/Controller/Admin/ModuleController.php(249): Omeka\Module\Manager->upgrade(Object(Omeka\Module\Module))
#4 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(78): Omeka\Controller\Admin\ModuleController->upgradeAction()
#5 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#6 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#7 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(106): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#8 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/DispatchListener.php(138): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#9 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#10 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#11 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Application.php(332): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#12 /websites/omekadev/home/www/omeka-s/index.php(21): Zend\Mvc\Application->run()
#13 {main}

Next exception 'Doctrine\DBAL\Exception\NonUniqueFieldNameException' with message 'An exception occurred while executing 'ALTER TABLE collecting_prompt ADD resource_query LONGTEXT DEFAULT NULL AFTER select_options':

SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'resource_query'' in /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:76
Stack trace:
#0 /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php(128): Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException('An exception oc...', Object(Doctrine\DBAL\Driver\PDOException))
#1 /websites/omekadev/home/www/omeka-s/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(1046): Doctrine\DBAL\DBALException::driverExceptionDuringQuery(Object(Doctrine\DBAL\Driver\PDOMySql\Driver), Object(Doctrine\DBAL\Driver\PDOException), 'ALTER TABLE col...')
#2 /websites/omekadev/home/www/omeka-s/modules/Collecting/Module.php(77): Doctrine\DBAL\Connection->exec('ALTER TABLE col...')
#3 /websites/omekadev/home/www/omeka-s/application/src/Module/Manager.php(314): Collecting\Module->upgrade('1.0.0-beta3', '1.0.0-rc.1', Object(Zend\ServiceManager\ServiceManager))
#4 /websites/omekadev/home/www/omeka-s/application/src/Controller/Admin/ModuleController.php(249): Omeka\Module\Manager->upgrade(Object(Omeka\Module\Module))
#5 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractActionController.php(78): Omeka\Controller\Admin\ModuleController->upgradeAction()
#6 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))
#7 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#8 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Controller/AbstractController.php(106): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#9 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/DispatchListener.php(138): Zend\Mvc\Controller\AbstractController->dispatch(Object(Zend\Http\PhpEnvironment\Request), Object(Zend\Http\PhpEnvironment\Response))
#10 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(322): Zend\Mvc\DispatchListener->onDispatch(Object(Zend\Mvc\MvcEvent))
#11 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-eventmanager/src/EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
#12 /websites/omekadev/home/www/omeka-s/vendor/zendframework/zend-mvc/src/Application.php(332): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
#13 /websites/omekadev/home/www/omeka-s/index.php(21): Zend\Mvc\Application->run()
#14 {main}

This looks particular to the upgrade from beta3 to rc.1 (and maybe to beta4, but it's hard to be sure). I don't see anything suspicious in the upgrade script, so this might just be a funny quirk based on how and when upgrades happened.

omeka/omeka-s#1081 is related to the debugging on this.

I agree with @patrickmj that this is likely a quirk. The quickest way to fix this is to reinstall the module. Otherwise you'll need to manually update the module version in the database.

@jimsafley What are the steps do you consider reinstalling the module? If I delete the files the module remains in the database

screen shot 2017-10-06 at 12 43 08 pm

Should be able to use git to checkout an older version, probably v1.0.0-beta3 (or some other version that give you the uninstall button). then go from there.

Works now. Thanks!