ODK Central, error when publishing a new form

Hello!

I installed ODK central v2025.1.4 on a Linux machine, and a few weeks after I upgraded to the ODK central v2025.2.

Today, for the first time I tried to publish my first form, but I'm getting a 500 Error. Checking the logs I'm getting the following error message:

service-1             | error: syntax error at or near "action"
service-1             |     at Parser.parseErrorMessage (/usr/odk/node_modules/pg-protocol/dist/parser.js:285:98)
service-1             |     at Parser.handlePacket (/usr/odk/node_modules/pg-protocol/dist/parser.js:122:29)
service-1             |     at Parser.parse (/usr/odk/node_modules/pg-protocol/dist/parser.js:35:38)
service-1             |     at TLSSocket.<anonymous> (/usr/odk/node_modules/pg-protocol/dist/index.js:11:42)
service-1             |     at TLSSocket.emit (node:events:518:28)
service-1             |     at TLSSocket.emit (node:domain:489:12)
service-1             |     at addChunk (node:internal/streams/readable:561:12)
service-1             |     at readableAddChunkPushByteMode (node:internal/streams/readable:512:3)
service-1             |     at Readable.push (node:internal/streams/readable:392:5)
service-1             |     at TLSWrap.onStreamRead (node:internal/stream_base_commons:189:23)
service-1             |     at TLSWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
service-1             |   length: 96,
service-1             |   severity: 'ERROR',
service-1             |   code: '42601',
service-1             |   detail: undefined,
service-1             |   hint: undefined,
service-1             |   position: '684',
service-1             |   internalPosition: undefined,
service-1             |   internalQuery: undefined,
service-1             |   where: undefined,
service-1             |   schema: undefined,
service-1             |   table: undefined,
service-1             |   column: undefined,
service-1             |   dataType: undefined,
service-1             |   constraint: undefined,
service-1             |   file: 'scan.l',
service-1             |   line: '1180',
service-1             |   routine: 'scanner_yyerror',
service-1             |   notices: []
service-1             | }

Any idea what might be the problem? I'm using a external database server.

As I don't have any data at the moment, I can destroy the server and start again, but I was hoping to learn how to fix it!

Thanks!

Hi @titocatala
Welcome to the forum! Please take the opportunity to introduce yourself so that people can understand how you use ODK.

Is form publishing the only thing that doesn't work? Are there any other clues? Have you made any new discoveries since posting this?

Itemset doesn't exist

Hello!

Yes, the publishing was the only thing didn't work... I was able to create/delete users and projects. Didn't try to submit data to a form as I wasn't able to publish one...

I also been able to make it work.

I was using Postgres v13 on an Azure server, so I upgraded the server to the latest version (17), although I think the problem was mainly on step 8 on the installation instructions (https://docs.getodk.org/central-install-digital-ocean/#):

$ touch ./files/allow-postgres14-upgrade

As I was using PG 13, I assumed that I didn't need to create that file, but then I noticed the following:

This is mostly useful for upgrades but is also currently necessary for fresh installs.

So I run the command and rebuild the solution and it is working.

As I said, didn't really have that much data on my ODK, only one project and 2 users, so not sure if that helped too!

Cheers!

That makes sense that doing that one step to touch the upgrade file worked to fix the database problem!