[GH-ISSUE #2907] [Bug]: Desktop Client no longer able to export budget files #15396

Closed
opened 2026-04-14 18:22:26 -05:00 by GiteaMirror · 16 comments
Owner

Originally created by @youngcw on GitHub (Jun 19, 2024).
Original GitHub issue: https://github.com/actualbudget/actual/issues/2907

Verified issue does not already exist?

  • I have searched and found no existing issue
  • I will be providing steps how to reproduce the bug (in most cases this will also mean uploading a demo budget file)

What happened?

I can no longer export budget files using either the linux appimage or flatpak. I haven't tested either windows or mac to see if they have the same issue.

Where are you hosting Actual?

None

What browsers are you seeing the problem on?

Desktop App (Electron)

Operating System

Linux

Originally created by @youngcw on GitHub (Jun 19, 2024). Original GitHub issue: https://github.com/actualbudget/actual/issues/2907 ### Verified issue does not already exist? - [X] I have searched and found no existing issue - [X] I will be providing steps how to reproduce the bug (in most cases this will also mean uploading a demo budget file) ### What happened? I can no longer export budget files using either the linux appimage or flatpak. I haven't tested either windows or mac to see if they have the same issue. ### Where are you hosting Actual? None ### What browsers are you seeing the problem on? Desktop App (Electron) ### Operating System Linux
GiteaMirror added the bugelectron labels 2026-04-14 18:22:26 -05:00
Author
Owner

@MatissJanis commented on GitHub (Jun 20, 2024):

Broken on Mac too (using v24.6.0 release)

<!-- gh-comment-id:2181108313 --> @MatissJanis commented on GitHub (Jun 20, 2024): Broken on Mac too (using v24.6.0 release)
Author
Owner

@MatissJanis commented on GitHub (Jun 20, 2024):

Did a bit of investigation here.

The error: unable to open database file.

Comes from SQLite. My current hypothesis is that the backend is no longer able to open the local sqlite file after upgrade of Electron (possibly permission issue?).

Breaking function: 5b1a730f11/packages/loot-core/src/server/cloud-storage.ts (L119)

My investigation here stops at this point. If anyone has time/ability - feel free to pick it up.

<!-- gh-comment-id:2181537263 --> @MatissJanis commented on GitHub (Jun 20, 2024): Did a bit of investigation here. The error: `unable to open database file`. Comes from SQLite. My current hypothesis is that the backend is no longer able to open the local sqlite file after upgrade of Electron (possibly permission issue?). Breaking function: https://github.com/actualbudget/actual/blob/5b1a730f111d6a670d336d573bddb95c2a1e7e96/packages/loot-core/src/server/cloud-storage.ts#L119 My investigation here stops at this point. If anyone has time/ability - feel free to pick it up.
Author
Owner

@youngcw commented on GitHub (Jun 22, 2024):

So I tried reverting #2763 and I could export the file. That went back to an older electron version that is no longer supported. I also noticed that the newer version of electron that that PR set lists node v20 as the version to use. I don't know if updating the project to node v20 would help or not.

Looks to me like better-sqlite v9.6.0 should work fine. It seems to support down to node v16 until version v10 which supports v18 still.

<!-- gh-comment-id:2184084459 --> @youngcw commented on GitHub (Jun 22, 2024): So I tried reverting #2763 and I could export the file. That went back to an older electron version that is no longer supported. I also noticed that the newer version of electron that that PR set lists node v20 as the version to use. I don't know if updating the project to node v20 would help or not. Looks to me like better-sqlite v9.6.0 should work fine. It seems to support down to node v16 until version v10 which supports v18 still.
Author
Owner

@MikesGlitch commented on GitHub (Jun 23, 2024):

It works on Windows.

The issue is related to this: https://github.com/electron/electron/issues/42621

It fails at:

const fileLocation = dialog.showSaveDialogSync({ title, defaultPath

The async variant of the same function works - I'll put a PR in for that so we don't have to wait for a fix to Electron

<!-- gh-comment-id:2185253320 --> @MikesGlitch commented on GitHub (Jun 23, 2024): It works on Windows. The issue is related to this: https://github.com/electron/electron/issues/42621 It fails at: [const fileLocation = dialog.showSaveDialogSync({ title, defaultPath ](https://github.com/actualbudget/actual/blob/6a21f8e3de7fda25afe4345a0af3aad6d90d4966/packages/desktop-electron/index.js#L313) The async variant of the same function works - I'll put a PR in for that so we don't have to wait for a fix to Electron
Author
Owner

@youngcw commented on GitHub (Jun 25, 2024):

#2925 only fixed linux but mac is still broken.

<!-- gh-comment-id:2189430701 --> @youngcw commented on GitHub (Jun 25, 2024): #2925 only fixed linux but mac is still broken.
Author
Owner

@MikesGlitch commented on GitHub (Jun 25, 2024):

Cool. I don't have a mac so I'd struggle to fix that one.

It looks like a sqlite error - the bettersqlite upgraded to the latest minor version, but I'd have expected that to fail for everything. I can't see anything that could have caused that here: https://github.com/WiseLibs/better-sqlite3/compare/v9.3.0...v9.6.0

Things we could check:

  • Does it fail when importing a budget
  • Does it fail when exporting transactions (from an account)
  • Does it fail when running the unpackaged version? E.g. Running yarn start:desktop

I found this, which is suggesting it may be permissions related - something about the app needing full disk access to write to the disk: https://stackoverflow.com/questions/67430680/sqlite3-operationalerror-unable-to-open-database-file-on-mac-os-external-hard

<!-- gh-comment-id:2189460962 --> @MikesGlitch commented on GitHub (Jun 25, 2024): Cool. I don't have a mac so I'd struggle to fix that one. It looks like a sqlite error - the bettersqlite upgraded to the latest minor version, but I'd have expected that to fail for everything. I can't see anything that could have caused that here: https://github.com/WiseLibs/better-sqlite3/compare/v9.3.0...v9.6.0 Things we could check: - Does it fail when importing a budget - Does it fail when exporting transactions (from an account) - Does it fail when running the unpackaged version? E.g. Running ```yarn start:desktop``` I found this, which is suggesting it may be permissions related - something about the app needing full disk access to write to the disk: https://stackoverflow.com/questions/67430680/sqlite3-operationalerror-unable-to-open-database-file-on-mac-os-external-hard
Author
Owner

@MatissJanis commented on GitHub (Jun 25, 2024):

Thanks! Testing using the latest master:

Does it fail when importing a budget

importing works as expected

Does it fail when exporting transactions (from an account)

exporting single account transactions works

Does it fail when running the unpackaged version? E.g. Running yarn start:desktop

no failures when running un-packaged version

🔴 giving the app "full disk access" permissions (manually) did not fix the issue

<!-- gh-comment-id:2189758439 --> @MatissJanis commented on GitHub (Jun 25, 2024): Thanks! Testing using the latest `master`: > Does it fail when importing a budget ✅ importing works as expected > Does it fail when exporting transactions (from an account) ✅ exporting single account transactions works > Does it fail when running the unpackaged version? E.g. Running yarn start:desktop ✅ no failures when running un-packaged version 🔴 giving the app "full disk access" permissions (manually) did not fix the issue
Author
Owner

@MikesGlitch commented on GitHub (Jun 25, 2024):

Cool, so that narrows it down then. We had two separate issues,

  • The one that got fixed earlier to do with writing the file on linux - fixed
  • This one which is preventing macs from opening the database - needs debugging

It's weird that it works on unpackaged version but not the packaged version. If it was packaged locally on the mac, would that fail I wonder...

It's probably something around here: 5b1a730f11/packages/loot-core/src/server/cloud-storage.ts (L143)

Would need to check the values of rawDbContent to see if it received the content

Another possibility is the openDatabase implementation is wrong - it's slightly different from the web one.

Electron:
48f5880f1d/packages/loot-core/src/platform/server/sqlite/index.electron.ts (L102)

Web:
48f5880f1d/packages/loot-core/src/platform/server/sqlite/index.web.ts (L162)

If the problem lies here, it must have always failed on Mac.

Do we know if this was working on Mac before we did the Electron update?

<!-- gh-comment-id:2189835502 --> @MikesGlitch commented on GitHub (Jun 25, 2024): Cool, so that narrows it down then. We had two separate issues, - [x] The one that got fixed earlier to do with writing the file on linux - fixed - [ ] This one which is preventing macs from opening the database - needs debugging It's weird that it works on unpackaged version but not the packaged version. If it was packaged locally on the mac, would that fail I wonder... It's probably something around here: https://github.com/actualbudget/actual/blob/5b1a730f111d6a670d336d573bddb95c2a1e7e96/packages/loot-core/src/server/cloud-storage.ts#L143 Would need to check the values of rawDbContent to see if it received the content Another possibility is the openDatabase implementation is wrong - it's slightly different from the web one. **Electron:** https://github.com/actualbudget/actual/blob/48f5880f1dc260ff8a791cdb87aa4ce947df54f6/packages/loot-core/src/platform/server/sqlite/index.electron.ts#L102 **Web:** https://github.com/actualbudget/actual/blob/48f5880f1dc260ff8a791cdb87aa4ce947df54f6/packages/loot-core/src/platform/server/sqlite/index.web.ts#L162 If the problem lies here, it must have always failed on Mac. Do we know if this was working on Mac before we did the Electron update?
Author
Owner

@MatissJanis commented on GitHub (Jun 25, 2024):

Quick update: went 5 months back in history to try and find offending commit. No luck. And I'm absolutely sure I've tried doing an export in the last 5 months and it worked.

Which leads me to believe this might be something new after upgrading the OS.

<!-- gh-comment-id:2189908877 --> @MatissJanis commented on GitHub (Jun 25, 2024): Quick update: went 5 months back in history to try and find offending commit. No luck. And I'm absolutely sure I've tried doing an export in the last 5 months and it worked. Which leads me to believe this might be something new after upgrading the OS.
Author
Owner

@xinomoreno commented on GitHub (Jun 29, 2024):

0 experience with typescript, node, electron....trying to learn. Maybe I'm doing something wrong and this is not a good trail.
I built the electron packaged app with build:desktop on a M1 mac and then executed the app. I wished i could have tried to export database but couldn't even open it. So I tried to lldb the app, got this exception:
( [Exception] Error: dlopen(/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s, 0x0001): tried: '/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (no such file), '/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (no such file), '/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')) at process.func [as dlopen] (node:electron/js2c/node_init:2:2214) at Module._extensions..node (node:internal/modules/cjs/loader:1489:18) at Object.func [as .node] (node:electron/js2c/node_init:2:2441) at Module.load (node:internal/modules/cjs/loader:1214:32) at Module._load (node:internal/modules/cjs/loader:1030:12) at c._load (node:electron/js2c/node_init:2:13672) at Module.require (node:internal/modules/cjs/loader:1242:19) at require (node:internal/modules/helpers:176:18) at bindings (/Users/miguelcalduchnos/dev/actual/packages/desktop-electron/dist/Actual.app/Contents/Resources/app.asar/node_modules/bindings/bindings.js:112:48) at new Database (/Users/miguelcalduchnos/dev/actual/packages/desktop-electron/dist/Actual.app/Contents/Resources/app.asar/node_modules/better-sqlite3/lib/database.js:48:64) { code: 'ERR_DLOPEN_FAILED' }

Could it be related to the same export issue?

<!-- gh-comment-id:2198269188 --> @xinomoreno commented on GitHub (Jun 29, 2024): 0 experience with typescript, node, electron....trying to learn. Maybe I'm doing something wrong and this is not a good trail. I built the electron packaged app with build:desktop on a M1 mac and then executed the app. I wished i could have tried to export database but couldn't even open it. So I tried to lldb the app, got this exception: ` ( [Exception] Error: dlopen(/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s, 0x0001): tried: '/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (no such file), '/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (no such file), '/private/var/folders/nz/zy2d1fbs7fsd7kg550fzw2tc0000gn/T/.com.actualbudget.actual.eknH2s' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')) at process.func [as dlopen] (node:electron/js2c/node_init:2:2214) at Module._extensions..node (node:internal/modules/cjs/loader:1489:18) at Object.func [as .node] (node:electron/js2c/node_init:2:2441) at Module.load (node:internal/modules/cjs/loader:1214:32) at Module._load (node:internal/modules/cjs/loader:1030:12) at c._load (node:electron/js2c/node_init:2:13672) at Module.require (node:internal/modules/cjs/loader:1242:19) at require (node:internal/modules/helpers:176:18) at bindings (/Users/miguelcalduchnos/dev/actual/packages/desktop-electron/dist/Actual.app/Contents/Resources/app.asar/node_modules/bindings/bindings.js:112:48) at new Database (/Users/miguelcalduchnos/dev/actual/packages/desktop-electron/dist/Actual.app/Contents/Resources/app.asar/node_modules/better-sqlite3/lib/database.js:48:64) { code: 'ERR_DLOPEN_FAILED' }` Could it be related to the same export issue?
Author
Owner

@MikesGlitch commented on GitHub (Jun 29, 2024):

mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')

Hey, try this https://github.com/WiseLibs/better-sqlite3/issues/968#issuecomment-1465320102

<!-- gh-comment-id:2198313657 --> @MikesGlitch commented on GitHub (Jun 29, 2024): > mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64') Hey, try this https://github.com/WiseLibs/better-sqlite3/issues/968#issuecomment-1465320102
Author
Owner

@xinomoreno commented on GitHub (Jul 2, 2024):

Seems my problem was in the other direction, actual was x86 app and sqlite3 is arm as my node.js. So I built actual as arm64 and sorted it out. I could reproduce the issue with export but when executing with lldb, export works like a charm 😢

<!-- gh-comment-id:2204604924 --> @xinomoreno commented on GitHub (Jul 2, 2024): Seems my problem was in the other direction, actual was x86 app and sqlite3 is arm as my node.js. So I built actual as arm64 and sorted it out. I could reproduce the issue with export but when executing with lldb, export works like a charm 😢
Author
Owner

@MikesGlitch commented on GitHub (Jul 11, 2024):

I have a potential fix for this in this PR: https://github.com/actualbudget/actual/pull/3015

It changes the way the bundle is built. I think it would be worth trying again on that build just to see if that's the issue.

Downloads are here: https://github.com/actualbudget/actual/actions/runs/9861102275

If it's not the issue we could try upgrading better-sqlite3

<!-- gh-comment-id:2222647539 --> @MikesGlitch commented on GitHub (Jul 11, 2024): I have a potential fix for this in this PR: https://github.com/actualbudget/actual/pull/3015 It changes the way the bundle is built. I think it would be worth trying again on that build just to see if that's the issue. Downloads are here: https://github.com/actualbudget/actual/actions/runs/9861102275 If it's not the issue we could try upgrading better-sqlite3
Author
Owner

@MatissJanis commented on GitHub (Jul 13, 2024):

macos Soma 14.5

🔴 "export data" still broken using the CI build from #3015
🔴 "export data" still broken using a local build of #3015
🔴 "export data" still broken using a local build of #3015 + upgrading better-sqlite3

Sadly this doesn't fix the issue. Though the error is still the same: unable to open database file. I'm guessing some recent osx security upgrade has hardened something.. which breaks exports. But I haven't had a chance to dig deeper here.

<!-- gh-comment-id:2226871865 --> @MatissJanis commented on GitHub (Jul 13, 2024): macos Soma 14.5 🔴 "export data" still broken using the CI build from #3015 🔴 "export data" still broken using a local build of #3015 🔴 "export data" still broken using a local build of #3015 + upgrading better-sqlite3 Sadly this doesn't fix the issue. Though the error is still the same: `unable to open database file`. I'm guessing some recent osx security upgrade has hardened something.. which breaks exports. But I haven't had a chance to dig deeper here.
Author
Owner

@xinomoreno commented on GitHub (Jul 13, 2024):

Working in debug made me thinking of a race condition...

El sáb, 13 jul 2024, 13:44, Matiss Janis Aboltins @.***>
escribió:

macos Soma 14.5

🔴 "export data" still broken using the CI build from #3015
https://github.com/actualbudget/actual/pull/3015
🔴 "export data" still broken using a local build of #3015
https://github.com/actualbudget/actual/pull/3015
🔴 "export data" still broken using a local build of #3015
https://github.com/actualbudget/actual/pull/3015 + upgrading
better-sqlite3

Sadly this doesn't fix the issue. Though the error is still the same: unable
to open database file. I'm guessing some recent osx security upgrade has
hardened something.. which breaks exports. But I haven't had a chance to
dig deeper here.


Reply to this email directly, view it on GitHub
https://github.com/actualbudget/actual/issues/2907#issuecomment-2226871865,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAC3ZONGS3DKYZR2ETAB67TZMEHIVAVCNFSM6AAAAABJSZMIZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRWHA3TCOBWGU
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

<!-- gh-comment-id:2226994260 --> @xinomoreno commented on GitHub (Jul 13, 2024): Working in debug made me thinking of a race condition... El sáb, 13 jul 2024, 13:44, Matiss Janis Aboltins ***@***.***> escribió: > macos Soma 14.5 > > 🔴 "export data" still broken using the CI build from #3015 > <https://github.com/actualbudget/actual/pull/3015> > 🔴 "export data" still broken using a local build of #3015 > <https://github.com/actualbudget/actual/pull/3015> > 🔴 "export data" still broken using a local build of #3015 > <https://github.com/actualbudget/actual/pull/3015> + upgrading > better-sqlite3 > > Sadly this doesn't fix the issue. Though the error is still the same: unable > to open database file. I'm guessing some recent osx security upgrade has > hardened something.. which breaks exports. But I haven't had a chance to > dig deeper here. > > — > Reply to this email directly, view it on GitHub > <https://github.com/actualbudget/actual/issues/2907#issuecomment-2226871865>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/AAC3ZONGS3DKYZR2ETAB67TZMEHIVAVCNFSM6AAAAABJSZMIZWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDEMRWHA3TCOBWGU> > . > You are receiving this because you are subscribed to this thread.Message > ID: ***@***.***> >
Author
Owner

@dsingleton86 commented on GitHub (Jul 15, 2024):

An unknown error occurred while exporting. Please report this as a new issue on Github.

I started using Actual only a couple of weeks back and now experiencing this error message using both 24.6.0 and 24.7.0 apps downloaded from GitHub with my budget hosted on PikaPods (also running 24.7.0).

I'm using macOS Ventura (13.6.7).
Let me know if I can provide any more information that may be useful...

<!-- gh-comment-id:2228509693 --> @dsingleton86 commented on GitHub (Jul 15, 2024): `An unknown error occurred while exporting. Please report this as a new issue on Github.` I started using Actual only a couple of weeks back and now experiencing this error message using both `24.6.0` and `24.7.0` apps downloaded from GitHub with my budget hosted on PikaPods (also running 24.7.0). I'm using macOS Ventura (13.6.7). Let me know if I can provide any more information that may be useful...
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/actual#15396