From d315c3bdb34bce9327a494e9edf5fe3774b81d7b Mon Sep 17 00:00:00 2001 From: Max Semenik Date: Mon, 8 Sep 2014 12:16:02 -0700 Subject: [PATCH] Ignore duplicate key errors in update-keys.sql Otherwise, reinstalls can fail. Change-Id: Ie4f7f73152a055f9a8d69970c22795433f564b26 --- includes/db/DatabaseSqlite.php | 3 +++ maintenance/update-keys.sql | 2 +- tests/phpunit/includes/db/DatabaseSqliteTest.php | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) 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')" ) + ); } /** -- 2.20.1