Comments (16)
Broken on Mac too (using v24.6.0 release)
from actual.
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:
My investigation here stops at this point. If anyone has time/ability - feel free to pick it up.
from actual.
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.
from actual.
It works on Windows.
The issue is related to this: electron/electron#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
from actual.
#2925 only fixed linux but mac is still broken.
from actual.
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: WiseLibs/better-sqlite3@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
from actual.
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
from actual.
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:
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:
Web:
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?
from actual.
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.
from actual.
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?
from actual.
mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')
Hey, try this WiseLibs/better-sqlite3#968 (comment)
from actual.
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 π’
from actual.
I have a potential fix for this in this PR: #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
from actual.
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.
from actual.
from actual.
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...
from actual.
Related Issues (20)
- [Feature] Exclude accounts from net worth HOT 2
- [Feature] Support for 3 decimal currencies. HOT 1
- [Feature] Allow configuration of User ID and Group ID used to run service in Docker HOT 1
- [Bug]: Electron Mac - "'Actual' is damaged and can't be opened. You should move it to the Trash" HOT 1
- [Feature] Merge budget files HOT 1
- [Bug]: Persistent floating "Distribute / Add Split" on desktop browser HOT 2
- [Bug]: Fatal Error on iOS mobile when browsing account HOT 4
- [Feature] Hide Notes column in the UI HOT 1
- [Feature] Append MEMO to NAME when importing QFX files. HOT 1
- [Feature] Ability to "tag" people in transactions HOT 1
- [Bug]: On a "new transaction" mobile page clicking "payee" takes two clicks instead of one HOT 2
- [Feature] Reapply selected/all rules to existing transactions HOT 1
- [Feature] Export report data as csv HOT 1
- [Feature] Read only access HOT 1
- [Bug]: PayloadTooLargeError: request entity too large HOT 4
- [Feedback] Dashboards
- [Feature] Themes HOT 2
- [Bug]: this budget cannot be loaded with this version of the app. make sure the app is up to date HOT 5
- [Bug]: Updating transaction fields while "Hide decimal places" is active changes the raw value of payment
- [Feature] Add a newline feature in transaction notes HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from actual.