« 非常に悲惨で危険な結果に終わったのでFirefoxを3.6から4にアップグレードするのを見送った | Start | Rio RainbowGate!・第12話 »

Firefox3.6からFirefox4にcookies.sqliteとplaces.sqliteが引き継げなかった原因が判明

原因は分かったけど、どうしよう。
変換プログラム作るか?Firefoxを箒するか?

原因はおそらく肥大化するplaces.sqliteやcookies.sqliteを軽くしてFirefoxの起動を速くしようとしたSQLite Manager または sqlite3 による両ファイルのreindexとvacuumが原因ではないかと推測される。

私のFirefox3.6のcookies.sqliteとplaces.sqliteのschemaと、sqliteファイルをいじっていない人の両ファイルのschemaを見比べたら一部に違いがあった。

私のcookies.sqlite

CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT,expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER, baseDomain TEXT);

手を加えてない人のcookies.sqlite

CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, name TEXT, value TEXT, host TEXT, path TEXT,expiry INTEGER, lastAccessed INTEGER, isSecure INTEGER, isHttpOnly INTEGER, baseDomain TEXT, creationTime INTEGER);

欠けた項目を保管した物を(元のcookies.sqliteの数行だが)新しいcookies.sqliteに仕立て上げてやったらFirefox4でもちゃんとcookieを認識した。

因みにFirefox4を起動するとschemaの形は上記とは順番が入れ替わったりする。

CREATE TABLE moz_cookies (id INTEGER PRIMARY KEY, baseDomain TEXT, name TEXT, value TEXT, host TEXT, path TEXT, expiry INTEGER, lastAccessed INTEGER, creationTime INTEGER, isSecure INTEGER, isHttpOnly INTEGER, CONSTRAINT moz_uniqueid UNIQUE (name, host, path));

(朝、sqlite3でschemaが見られないと書いたのはsqlite3のバージョンが古かったからで、最新にしたら見えた。)

そう言う訳で、下手にvacuumか何かしてしまったせいでFirefox4がお気に召さない形になってしまったcookies.sqliteとplaces.sqliteなのだが、プログラムを作れば何とかなりそうな感じではある(実はplaces.sqliteの方はもっと複雑に変わってしまっていて、cookies.sqlite程簡単ではない。が、機械的な違いである事は確か)。


最低限プログラムを組む迄は私の手近のFirefox3.6は全てこのままだ。
Firefox3.6とFirefox4を比べるとFirefox3.6時代はsqlite3.dllを使っていたのが、mozsqlite.dllに変更になっていたので.sqliteファイルの扱いモジュールが変更されて今回の現象となったと思われる。

追ってmozillaからこの件を何とかしてくれるバージョンがすぐに出ないかなあ・・・

|

« 非常に悲惨で危険な結果に終わったのでFirefoxを3.6から4にアップグレードするのを見送った | Start | Rio RainbowGate!・第12話 »

TrackBack


Folgende Weblogs beziehen sich auf Firefox3.6からFirefox4にcookies.sqliteとplaces.sqliteが引き継げなかった原因が判明:

« 非常に悲惨で危険な結果に終わったのでFirefoxを3.6から4にアップグレードするのを見送った | Start | Rio RainbowGate!・第12話 »