How to downgrade from Chrome 35 to 34 without losing data?

10,949

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.

  1. 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
  2. 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.

  3. 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);
    
  4. After reverting the migration, you can safely lower the database version:

    UPDATE meta SET value='54' WHERE key='version' OR
                                     key = 'last_compatible_version';
    
  5. 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!

Share:
10,949

Related videos on Youtube

Rob W
Author by

Rob W

Updated on September 18, 2022

Comments

  • Rob W
    Rob W almost 2 years

    After upgrading Chromium from 34 to 35, the usability of Chromium went downhill. So I decided to downgrade Chromium. Fortunately, the previous version of Chromium was still somewhere on my disk, so downgrading (in ArchLinux) was as simple as:

    sudo pacman -U /var/cache/pacman/pkg/chromium-34.0.1847.137-1-x86_64.pkg.tar.xz
    

    After running the previous command, Chromium did start, but unfortunately, I kept getting bugged by the following message on start-up:

    Your profile can not be used because it is from a newer version of Google Chrome. Some features may be unavailable. Please specify a different profile directory or use a newer version of Chrome.

    One way to get rid of this message is to delete ~/.config/chromium/Default/Web Data, but this also caused my search engine keywords to disappear.

    How can I downgrade Chromium without losing any data?

    Note: I'm using Linux, but this problem is platform-independent. Feel free to answer from the perspective of a non-Linux operating system such as Windows.

    • slhck
      slhck about 10 years
      Just out of curiosity.. Do you really want to run an outdated browser version forever now? This has quite a few security implications.
    • Rob W
      Rob W about 10 years
      @slhck No, just until the UX bugs are fixed. After upgrading, I got random visual artifacts, bad font rendering in the UI, random black rectangles, and dragging bugs (crbug.com/376761). This is even worse than the JavaScript and devtools bugs in Chromium 33 (which I skipped as well). If the bug doesn't get resolved within two release cycles, I will run my own compiled version of Chromium with Aura disabled.
    • Zoredache
      Zoredache about 10 years
      In the future, you might find this is a lot easier, if you make a backup of your system/data before you upgrade.
    • Synetech
      Synetech about 6 years
      Yeah, because it's practical to backup your whole system and all your data every few hours when Google releases a new version… well, maybe if you're Google. 🙄
  • Perkins
    Perkins over 9 years
    Actually, it works from newer versions of chrome too, it will recreate the version 54, which was used in chrome 34 and then re-update to the newer version; of course, it is likely to quit at some point, and may not fix everything, but it does get rid of the popups. (reverted from version 40 to 33.0.1750 to get flash drm working)