Skip to content

Commit

Permalink
Fixed issue #15912: Error updating database on upgrade from 3.x
Browse files Browse the repository at this point in the history
Dev Removed references to obsolete DB driver mysqli
  • Loading branch information
c-schmitz committed Mar 16, 2020
1 parent 61e88fa commit 5ce4587
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions application/helpers/update/updatedb_helper.php
Expand Up @@ -71,7 +71,7 @@ function db_upgrade_all($iOldDBVersion, $bSilent = false)
$oDB->schemaCachingDuration = 0; // Deactivate schema caching
Yii::app()->setConfig('Updating', true);
$options = "";
if(in_array(Yii::app()->db->driverName,['mysql','mysqli'])) {
if ( Yii::app()->db->driverName == 'mysql' ) {
$options = 'ROW_FORMAT=DYNAMIC'; // Same than create-database
}
try {
Expand All @@ -90,7 +90,6 @@ function db_upgrade_all($iOldDBVersion, $bSilent = false)
// copy any valid codes from code field to assessment field
switch (Yii::app()->db->driverName){
case 'mysql':
case 'mysqli':
$oDB->createCommand("UPDATE {{answers}} SET assessment_value=CAST(`code` as SIGNED) where `code` REGEXP '^-?[0-9]+$'")->execute();
$oDB->createCommand("UPDATE {{labels}} SET assessment_value=CAST(`code` as SIGNED) where `code` REGEXP '^-?[0-9]+$'")->execute();
// copy assessment link to message since from now on we will have HTML assignment messages
Expand Down Expand Up @@ -1102,7 +1101,6 @@ function db_upgrade_all($iOldDBVersion, $bSilent = false)
}
switch (Yii::app()->db->driverName){
case 'mysql':
case 'mysqli':
addColumn('{{sessions}}', 'data', 'longbinary');
break;
case 'sqlsrv':
Expand Down Expand Up @@ -1218,7 +1216,7 @@ function db_upgrade_all($iOldDBVersion, $bSilent = false)
if ($iOldDBVersion < 178)
{
$oTransaction = $oDB->beginTransaction();
if (Yii::app()->db->driverName=='mysql' || Yii::app()->db->driverName=='mysqli')
if (Yii::app()->db->driverName=='mysql')
{
modifyPrimaryKey('questions', array('qid','language'));
}
Expand Down Expand Up @@ -2432,9 +2430,14 @@ function db_upgrade_all($iOldDBVersion, $bSilent = false)
}

if ($iOldDBVersion < 400) {
// Fix database default collation, again
if (Yii::app()->db->driverName == 'mysql') {
Yii::app()->db->createCommand("ALTER DATABASE `".getDBConnectionStringProperty('dbname')."` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;");
}

// This update moves localization-dependant strings from question group/question/answer tables to related localization tables
$oTransaction = $oDB->beginTransaction();

// Question table
/* l10ns question table */
if(Yii::app()->db->schema->getTable('{{question_l10ns}}')){
Expand Down Expand Up @@ -3151,7 +3154,6 @@ function upgradeSurveyTables402($sMySQLCollation)
alterColumn($sTableName, 'token', "string(36) COLLATE SQL_Latin1_General_CP1_CS_AS");
break;
case 'mysql':
case 'mysqli':
alterColumn($sTableName, 'token', "string(36) COLLATE '{$sMySQLCollation}'");
break;
default: die('Unknown database driver');
Expand All @@ -3178,7 +3180,6 @@ function upgradeTokenTables402($sMySQLCollation)
alterColumn($sTableName, 'token', "string(36) COLLATE SQL_Latin1_General_CP1_CS_AS");
break;
case 'mysql':
case 'mysqli':
alterColumn($sTableName, 'token', "string(36) COLLATE '{$sMySQLCollation}'");
break;
default: die('Unknown database driver');
Expand Down Expand Up @@ -3352,7 +3353,6 @@ function transferPasswordFieldToText($oDB)
{
switch ($oDB->getDriverName()) {
case 'mysql':
case 'mysqli':
$oDB->createCommand()->alterColumn('{{users}}', 'password', 'text NOT NULL');
break;
case 'pgsql':
Expand Down Expand Up @@ -4019,7 +4019,6 @@ function upgradeSurveyTables181($sMySQLCollation)
$oDB->createCommand()->createIndex("{{idx_{$sTableName}_".rand(1, 40000).'}}', $sTableName, 'token');
break;
case 'mysql':
case 'mysqli':
alterColumn($sTableName, 'token', "string(35) COLLATE '{$sMySQLCollation}'");
break;
default: die('Unknown database driver');
Expand Down Expand Up @@ -4047,7 +4046,6 @@ function upgradeTokenTables181($sMySQLCollation)
$oDB->createCommand()->createIndex("{{idx_{$sTableName}_".rand(1, 50000).'}}', $sTableName, 'token');
break;
case 'mysql':
case 'mysqli':
alterColumn($sTableName, 'token', "string(35) COLLATE '{$sMySQLCollation}'");
break;
default: die('Unknown database driver');
Expand Down Expand Up @@ -4727,7 +4725,6 @@ function alterColumn($sTable, $sColumn, $sFieldType, $bAllowNull = true, $sDefau
$oDB = Yii::app()->db;
switch (Yii::app()->db->driverName) {
case 'mysql':
case 'mysqli':
$sType = $sFieldType;
if ($bAllowNull !== true) {
$sType .= ' NOT NULL';
Expand Down

1 comment on commit 5ce4587

@olleharstedt
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mysqli is not needed anymore?

Please sign in to comment.