How to downgrade from Chrome 35 to 34 without losing data?
Solution 1:
Note: Close Chrome and back up your profile before messing with it!
Web Data
is a SQLite database, so I used the sqlite3 program to open the database.
-
What is the current version of the "Web Data" database? (run
SELECT * from meta;
)sqlite> SELECT * FROM meta; Default Search Provider ID|34 last_compatible_version|55 version|55 Builtin Keyword Version|70
-
The emphasized rows in the previous output refer to internal database version numbers in Chromium. For every version, you can find the relevant migration codes in Chromium's source code (autofill_table.cc). Specifically, take a look at the
AutofillTable::MigrateToVersion
method. Since my database version is 55, I looked at "case 55"case 55: *update_compatible_version = true; return MigrateToVersion55MergeAutofillDatesTable();
After finding out this method, I was almost ready to write a SQLite query to reverse the migration.
-
Using the knowledge from the previous step (and the original schema from a different table on another computer), I constructed the following query (copy-paste the query to
sqlite3
):
Note: This query is specific to downgrading Chrome 35 to 34!CREATE TABLE autofill_v54 ( name VARCHAR, value VARCHAR, value_lower VARCHAR, pair_id INTEGER PRIMARY KEY, count INTEGER DEFAULT 1); CREATE TABLE autofill_dates ( pair_id INTEGER DEFAULT 0, date_created INTEGER DEFAULT 0); INSERT INTO autofill_v54 ( name, value, value_lower, count ) SELECT name, value, value_lower, count FROM autofill; INSERT INTO autofill_dates ( pair_id, date_created ) SELECT pair_id, date_created FROM autofill_v54 a54 JOIN autofill a USING (name, value); DROP TABLE autofill; ALTER TABLE autofill_v54 RENAME TO autofill; CREATE INDEX autofill_name ON autofill (name); CREATE INDEX autofill_name_value_lower ON autofill (name, value_lower);
-
After reverting the migration, you can safely lower the database version:
UPDATE meta SET value='54' WHERE key='version' OR key = 'last_compatible_version';
Close the database using
.quit
After completing all of these steps, I started Chromium, there were no annoying popups and all profile data was still intact!