From: Max Semenik Date: Mon, 8 Sep 2014 19:16:02 +0000 (-0700) Subject: Ignore duplicate key errors in update-keys.sql X-Git-Tag: 1.31.0-rc.0~14089^2 X-Git-Url: http://git.cyclocoop.org/%24image?a=commitdiff_plain;h=d315c3bdb34bce9327a494e9edf5fe3774b81d7b;p=lhc%2Fweb%2Fwiklou.git Ignore duplicate key errors in update-keys.sql Otherwise, reinstalls can fail. Change-Id: Ie4f7f73152a055f9a8d69970c22795433f564b26 --- diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php index 9a03a339ca..dd2e813e55 100644 --- a/includes/db/DatabaseSqlite.php +++ b/includes/db/DatabaseSqlite.php @@ -873,6 +873,9 @@ class DatabaseSqlite extends DatabaseBase { } elseif ( preg_match( '/^\s*DROP INDEX/i', $s ) ) { // DROP INDEX is database-wide, not table-specific, so no ON clause. $s = preg_replace( '/\sON\s+[^\s]*/i', '', $s ); + } elseif ( preg_match( '/^\s*INSERT IGNORE\b/i', $s ) ) { + // INSERT IGNORE --> INSERT OR IGNORE + $s = preg_replace( '/^\s*INSERT IGNORE\b/i', 'INSERT OR IGNORE', $s ); } return $s; diff --git a/maintenance/update-keys.sql b/maintenance/update-keys.sql index d5ef924d8f..dfbb67ea45 100644 --- a/maintenance/update-keys.sql +++ b/maintenance/update-keys.sql @@ -20,7 +20,7 @@ -- table prefix if any when running these scripts. -- -INSERT INTO /*_*/updatelog +INSERT IGNORE INTO /*_*/updatelog SELECT 'filearchive-fa_major_mime-patch-fa_major_mime-chemical.sql' AS ul_key, null as ul_value UNION SELECT 'image-img_major_mime-patch-img_major_mime-chemical.sql', null UNION SELECT 'oldimage-oi_major_mime-patch-oi_major_mime-chemical.sql', null diff --git a/tests/phpunit/includes/db/DatabaseSqliteTest.php b/tests/phpunit/includes/db/DatabaseSqliteTest.php index 1db6faec53..98b4ca046c 100644 --- a/tests/phpunit/includes/db/DatabaseSqliteTest.php +++ b/tests/phpunit/includes/db/DatabaseSqliteTest.php @@ -162,6 +162,9 @@ class DatabaseSqliteTest extends MediaWikiTestCase { $this->assertEquals( "DROP INDEX foo -- dropping index", $this->replaceVars( "DROP INDEX /*i*/foo ON /*_*/bar -- dropping index" ) ); + $this->assertEquals( "INSERT OR IGNORE INTO foo VALUES ('bar')", + $this->replaceVars( "INSERT OR IGNORE INTO foo VALUES ('bar')" ) + ); } /**