Can't upgrade to 1.8rc1 because block_instance has an index instead of a key
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mahara |
Fix Released
|
High
|
Aaron Wells |
Bug Description
See https:/
At least three sites have had fatal errors while attempting to upgrade to 1.8rc1, because their block_instance table does not have a key called blockinst_
This particular key/index is a uniqueness key on the block_instance table, across the (view, column, order) columns. In the code, it's referred to as "viewcolumnorde
At least two of the three reporting sites have been around since before Mahara version 1.0. However, it's to be expected that many of the biggest and highest-profile Mahara sites will have been around for a long time, so we should provide them with a clean upgrade path where possible.
Changed in mahara: | |
status: | New → Confirmed |
importance: | Undecided → High |
assignee: | nobody → Aaron Wells (u-aaronw) |
milestone: | none → 1.8.0 |
Changed in mahara: | |
status: | Confirmed → Fix Committed |
Changed in mahara: | |
status: | Fix Committed → Fix Released |
To replicate:
1. Install a copy of Mahara 1.1. (This can be obtained by checking out the head of the 1.1_STABLE branch from gerrit or gitorious. There was no admin password prompt in 1.1, instead the default username will be "admin" and password will be "mahara")
2. Upgrade to 1.8rc1
Expected result: It should upgrade cleanly to 1.8rc1
Actual result: Upgrade dies with this error stack:
[DBG] e3 (lib/dml.php:167) postgres7 error: [-18: ERROR: constraint "blocinst_ viecolord_ uk" of relation "block_instance" does not exist] in adodb_throw(ALTER TABLE block_instance DROP CONSTRAINT blocinst_ viecolord_ uk, ) viecolord_ uk php:752) Could not execute command: ALTER TABLE block_instance DROP CONSTRAINT blocinst_ viecolord_ uk www/mahara/ htdocs/ lib/errors. php:109 www/mahara/ htdocs/ lib/errors. php:752 >__construct( "Could not execute command: ALTER TABLE block_insta...") at /home/aaronw/ www/mahara/ htdocs/ lib/dml. php:169 www/mahara/ htdocs/ lib/dml. php:1403 sql_arr( array(size 1), true, true) at /home/aaronw/ www/mahara/ htdocs/ lib/ddl. php:1135 object( XMLDBTable) , object(XMLDBKey)) at /home/aaronw/ www/mahara/ htdocs/ lib/db/ upgrade. php:3327 upgrade( "2009022627" ) at /home/aaronw/ www/mahara/ htdocs/ lib/upgrade. php:311 core(object( stdClass) ) at /home/aaronw/ www/mahara/ htdocs/ lib/mahara. php:265 mahara( array(size 20)) at /home/aaronw/ www/mahara/ htdocs/ admin/cli/ upgrade. php:62
[DBG] e3 (lib/dml.php:167) Command was: ALTER TABLE block_instance DROP CONSTRAINT blocinst_
[WAR] e3 (lib/errors.
Call stack (most recent first):
* log_message("Could not execute command: ALTER TABLE block_insta...", 8, true, true) at /home/aaronw/
* log_warn("Could not execute command: ALTER TABLE block_insta...") at /home/aaronw/
* SQLException-
* execute_sql("ALTER TABLE block_instance DROP CONSTRAINT blocins...") at /home/aaronw/
* execute_
* drop_key(
* xmldb_core_
* upgrade_
* upgrade_
[WAR] e3 (lib/dml.php:169) Could not execute command: ALTER TABLE block_instance DROP CONSTRAINT blocinst_ viecolord_ uk www/mahara/ htdocs/ lib/dml. php:1403 sql_arr( array(size 1), true, true) at /home/aaronw/ www/mahara/ htdocs/ lib/ddl. php:1135 object( XMLDBTable) , object(XMLDBKey)) at /home/aaronw/ www/mahara/ htdocs/ lib/db/ upgrade. php:3327 upgrade( "2009022627" ) at /home/aaronw/ www/mahara/ htdocs/ lib/upgrade. php:311 core(object( stdClass) ) at /home/aaronw/ www/mahara/ htdocs/ lib/mahara. php:265 mahara( array(size 20)) at /home/aaronw/ www/mahara/ htdocs/ admin/cli/ upgrade. php:62
Call stack (most recent first):
* execute_sql("ALTER TABLE block_instance DROP CONSTRAINT blocins...") at /home/aaronw/
* execute_
* drop_key(
* xmldb_core_
* upgrade_
* upgrade_
A nonrecoverable error occurred. This probably means you have encountered a bug in the system