I know you can’t fully support a non-Docker installation, just was looking for some pointers since I don’t know the software as well as you and I was not getting error/debug messages.
Also, it looks like someone else is also having this problem: Error when saving settings
I’m still troubleshooting, so capturing this here as a work in progress for me and fishing for ideas!
I had Xibo 2.3.9 running fine on:
- Ubuntu 18.04
- Apache 2.4.29
- Php 7.2.24
- MySql 5.7.33
Then I upgraded servers to:
- Ubuntu 20.04
- Apache 2.4.46
- Php 7.4.16 (now 7.3.27)
- MySql 8.0.23
On this new installation (trying it out for functionality, before moving over everything), I noticed that I could not update the settings. However, other functionality I tried seemed to work ok. I was stumped.
Initially began troubleshooting by setting the log settings to ‘debug’ and server mode to ‘Test’ in the setting DB table. Still received no error messages (even looking at the AJAX calls, etc…nothing). I poked around with some PHP versions (hence the regression to 7.3) and then investigated some issues that could be posed by the different MySql versions. Without any insight, for a while I was stuck. Then, I decided to upgrade this installation to 3.0.0-rc2…I mean, why not? And, something changed!
After the upgrade completed, I began to get the following error message when I went to update the Settings: “SQLSTATE[HY000]: General error: 1366 Incorrect integer value: ‘’ for column ‘entityId’ at row 1”; with this, I had something to go on!
Looking through the database, there’s only a couple tables with entityId field. I zeroed in on the
auditlog table, located the LogService file, and discovered that the $entityId variable is empty.
To fix, I changed “lib/Service/LogService.php” as follows, starting at line 106:
'logDate' => Carbon::now()->format('U'),
'userId' => $this->userId,
'entity' => $entity,
'message' => $message,
'entityId' => sprintf('%d',$entityId),
'objectAfter' => $object
Now, I can update settings!
But, in the course of all this troubleshooting, I have discovered some additional errors. All seem to be caused by values that are blank/empty/false being passed as ‘’ to the DB. For example, when attempting to create a new user manually, I see this error: “SQLSTATE[HY000]: General error: 1366 Incorrect integer value: ‘’ for column ‘isPasswordChangeRequired’ at row 1”
So it seems that, when something should be 0 or FALSE, it’s being passed as empty…I’m off to Google some more but I def would appreciate input on what might be causing this condition! Is it a PHP thing? Configuration thing?