jhonderson / actual-http-api

Basic Actual Budget API exposed through HTTP endpoints
MIT License
40 stars 9 forks source link

no such column: goal_def #3

Closed cinderblockgames closed 9 months ago

cinderblockgames commented 9 months ago

I'm getting an error when the API tries to download data from Actual. I tried clearing the local data to let it start fresh, but I still get the same error.

Actual HTTP Server Listening on PORT:  5007
Actual api client initialized successfully
Loading fresh spreadsheet
Syncing since 2023-12-03T01:34:22.137Z-00FC-ba86a3038083a15f 0 (attempt: 0)
Got messages from server 53
SyncError: SyncError: invalid-schema
    at apply (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43158:31)
    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43362:29
    at sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)
    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28781:35)
    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37013:77)
    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43357:50
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  reason: 'invalid-schema',

{

    error: {
      message: 'no such column: goal_def',
      stack: 'SqliteError: no such column: goal_def\n' +
        '    at Database.prepare (/usr/src/app/node_modules/better-sqlite3/lib/methods/wrappers.js:5:21)\n' +
        '    at Module.prepare (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28739:27)\n' +
        '    at Module.cache (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37003:85)\n' +
        '    at apply (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43155:100)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43362:29\n' +
        '    at sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28781:35)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37013:77)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43357:50\n' +
        '    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)'
    },

    query: {
      sql: 'UPDATE categories SET goal_def = ? WHERE id = ?',
      params: [Array]
    }
  }
}
Full error details {
  message: 'SyncError: invalid-schema',
  reason: 'invalid-schema',

{

    error: {
      message: 'no such column: goal_def',
      stack: 'SqliteError: no such column: goal_def\n' +
        '    at Database.prepare (/usr/src/app/node_modules/better-sqlite3/lib/methods/wrappers.js:5:21)\n' +
        '    at Module.prepare (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28739:27)\n' +
        '    at Module.cache (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37003:85)\n' +
        '    at apply (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43155:100)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43362:29\n' +
        '    at sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28781:35)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37013:77)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43357:50\n' +
        '    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)'
    },

    query: {
      sql: 'UPDATE categories SET goal_def = ? WHERE id = ?',
      params: [Array]
    }
  }
}
Unknown error while interacting with Actual Api. See server logs for more information Error: Something went wrong trying to download that file, sorry! Visit https://actualbudget.org/contact/ for support. (reason: invalid-schema)
    at handlers.api/download-budget (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:32103:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Ignoring unhandledRejection caused by Actual api library
Loading fresh spreadsheet
Syncing since 2023-12-03T01:34:22.137Z-00FC-ba86a3038083a15f 0 (attempt: 0)
Got messages from server 53
SyncError: SyncError: invalid-schema
    at apply (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43158:31)
    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43362:29
    at sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)
    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28781:35)
    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37013:77)
    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43357:50
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  reason: 'invalid-schema',

{

    error: {
      message: 'no such column: goal_def',
      stack: 'SqliteError: no such column: goal_def\n' +
        '    at Database.prepare (/usr/src/app/node_modules/better-sqlite3/lib/methods/wrappers.js:5:21)\n' +
        '    at Module.prepare (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28739:27)\n' +
        '    at Module.cache (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37003:85)\n' +
        '    at apply (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43155:100)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43362:29\n' +
        '    at sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:28781:35)\n' +
        '    at Module.transaction (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:37013:77)\n' +
        '    at /usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:43357:50\n' +
        '    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)'
    },

    query: {
      sql: 'UPDATE categories SET goal_def = ? WHERE id = ?',
      params: [Array]
    }
  }
}
Unknown error while interacting with Actual Api. See server logs for more information Error: We had an unknown problem opening “My-Finances-1ec9adb”.
    at handlers.api/download-budget (/usr/src/app/node_modules/@actual-app/api/dist/app/bundle.api.js:32074:31)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Ignoring unhandledRejection caused by Actual api library
jhonderson commented 9 months ago

Could you please confirm what version of Actual budget are you using? (I am presuming it is the new version v23.12.0)

I am using v23.11.0 and I have no issues. Here is what I think might be happening:

The actual team probably added a column called goal_def to the categories table in the latest version v23.12.0. That causes Actual UI to send sync updates to your Actual API for the column categories.goal_def, but that column doesn't exist in your Actual API client library version.

This might be resolved by upgrading @actual-app/api version from 6.2.1 to 6.3.0, I'd have to test it out. Let me know if you can test that fix by simply cloning this repo, making the change and deploying locally. Otherwise I might take a look at it next weekend.

cinderblockgames commented 9 months ago

Yes, latest version. I'll try to update the API version today.

jhonderson commented 9 months ago

Thanks for submitting a PR. I just push a new version of the actual-http-api docker image to DockerHub, try it with that version (docker pull jhonderson/actual-http-api:latest) and let me know if this issue goes away

cinderblockgames commented 9 months ago

Seems to be working with the latest from DockerHub. Thank you!