7

Right now, running locally, every action from the Meteor CLI in OSX throws this exception:

/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:245 throw(ex);

Error: SQLITE_CORRUPT: database disk image is malformed

I'm stumped.

I looked at the fibers/future.js code but it's way beyond me. I see that SQLite is used in catalog-remote.js, so is there a way to reset using the SQLite CLI tool? Or, should I delete and reinstall SQlite3 (and if so, how)?

Here's the full log I get in Terminal when trying any Meteor command:

/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:245
                        throw(ex);
                              ^
Error: SQLITE_CORRUPT: database disk image is malformed
    at Object.Future.wait (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:395:18)
    at runOnce (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:237:21)
    at [object Object]._.extend._serialize (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:176:14)
    at [object Object]._.extend.runInTransaction (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:242:21)
    at [object Object]._.extend._columnsQuery (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:888:24)
    at [object Object]._.extend._contentQuery (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:878:21)
    at [object Object]._.extend.getReleaseVersion (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:663:23)
    at Object.release.load (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/release.js:233:41)
    at /Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/main.js:893:23
    - - - - -
    at Object.Future.wait (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:398:14)
    at [object Object]._.extend._query (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:312:22)
    at [object Object]._.extend.query (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:76:20)
    at /Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:889:18
    at runOnce (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:211:18)
    at [object Object]._.extend._serialize (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:176:14)
    at [object Object]._.extend.runInTransaction (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:242:21)
    at [object Object]._.extend._columnsQuery (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:888:24)
    at [object Object]._.extend._contentQuery (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:878:21)
    at [object Object]._.extend.getReleaseVersion (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/catalog-remote.js:663:23)
    at Object.release.load (/Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/release.js:233:41)
    at /Users/mallorym/.meteor/packages/meteor-tool/.1.1.3.1d614zp++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/tools/main.js:893:23
    - - - - -

Thanks for any help ^^

Mallory-Erik
  • 1,750
  • 1
  • 19
  • 24
  • To the extent of my knowledge, Meteor does not use SQlite3, thus the error is probably not with the fiber, but rather with the code that uses fibers. What package/library are you using that uses SQlite3? – Xinzz Jul 12 '15 at 19:37
  • I was also surprised. I think the problem is with the package manager, thus catalog-remote.js, which seems to help keep track of packages, apparently with SQLite3... – Mallory-Erik Jul 13 '15 at 00:59
  • I have the same issue. It just happened when I tried a `meteor search` or a `meteor add`. – Christian Fritz Aug 01 '15 at 04:32

2 Answers2

13

With a little help from here, I was able to fix it, and without having to delete all my downloaded meteor packages, as suggested in that post. It was enough to delete the metadata:

rm -rf ~/.meteor/package-metadata

Just be prepared to wait quite a while while meteor recreates these databases on next start.

Christian Fritz
  • 20,641
  • 3
  • 42
  • 71
  • I used ffxsam's answer (from the Meteor forum you linked to) and it worked, but your solution is a clear improvement, thanks. – Mallory-Erik Aug 01 '15 at 04:54
  • trying this fix. roughly how long is 'quite a while'? It's been several minutes. are talking like a half an hour? 15 mins? – Culex Jun 29 '16 at 03:14
  • I think that depends on the number of packages you use in your project. But yeah, it shouldn't take longer than 5 minutes. If you are not sure whether it is still working, just see whether the directory populates. – Christian Fritz Jun 29 '16 at 03:19
0

Using sqlite3 you can repair the DB.

cd ~/.meteor/package-metadata/v2.0.1
sqlite3 packages.data.db .dump > backup
mv packages.data.db packages.data.db.bustedX
sqlite3 packages.data.db < backup
rm backup

Essentially, even though the DB reports as corrupt. The SQLite tool can dump it and then recreate it.

Cheers!

BruceJo
  • 591
  • 6
  • 17