Giter VIP home page Giter VIP logo

Comments (16)

MatissJanis avatar MatissJanis commented on August 24, 2024 1

Broken on Mac too (using v24.6.0 release)

from actual.

MatissJanis avatar MatissJanis commented on August 24, 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:

export async function exportBuffer() {

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

from actual.

youngcw avatar youngcw commented on August 24, 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.

from actual.

MikesGlitch avatar MikesGlitch commented on August 24, 2024

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.

youngcw avatar youngcw commented on August 24, 2024

#2925 only fixed linux but mac is still broken.

from actual.

MikesGlitch avatar MikesGlitch commented on August 24, 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: 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.

MatissJanis avatar MatissJanis commented on August 24, 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

from actual.

MikesGlitch avatar MikesGlitch commented on August 24, 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:

const memDb = await sqlite.openDatabase(rawDbContent);

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:

export function openDatabase(pathOrBuffer: string | Buffer) {

Web:

export async function openDatabase(pathOrBuffer?: string | Buffer) {

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.

MatissJanis avatar MatissJanis commented on August 24, 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.

from actual.

xinomoreno avatar xinomoreno commented on August 24, 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?

from actual.

MikesGlitch avatar MikesGlitch commented on August 24, 2024

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

Hey, try this WiseLibs/better-sqlite3#968 (comment)

from actual.

xinomoreno avatar xinomoreno commented on August 24, 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 😒

from actual.

MikesGlitch avatar MikesGlitch commented on August 24, 2024

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.

MatissJanis avatar MatissJanis commented on August 24, 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.

from actual.

xinomoreno avatar xinomoreno commented on August 24, 2024

from actual.

dsingleton86 avatar dsingleton86 commented on August 24, 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...

from actual.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.