SQL syntax error on Percona MySQL 8.0.36-28

Checklist
I have read intro post: About the Installation Issues category
I have read the tutorials, help and searched for similar issues
I provide relevant information about my server (component names and versions, etc.)
I provide a copy of my logs and healthcheck
I describe the steps I have taken to trouble shoot the problem
I describe the steps on how to reproduce the issue

Hi,
I’m testing whole Passbolt setup update in a test enviroment.
Prod is running Passbolt 3.5 with MySQL 5.6, PHP 7.3 and NGINX 1.20.1
We are a “Percona MySQL” shop so we did the update to Percona MySQL 8.0.36-28 without changing anything else and Passbolt showed everything but couldn’t make changes or create anything new.

I embarked in the PHP, NGINX and PASSBOLT update to see if it fixed the issue but now I’m facing ERROR 500

[root@passbolt-prep passbolt]# su -s /bin/bash -c "./bin/cake passbolt healthcheck" nginx

     ____                  __          ____  
    / __ \____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    \__,_/____/____/_.___/\____/_/\__/   

 Open source password manager for teams
-------------------------------------------------------------------------------
 Healthcheck shell         
-------------------------------------------------------------------------------

 Environment

 [PASS] PHP version 8.1.28.
 [PASS] PHP version is 8.1 or above.
 [PASS] PCRE compiled with unicode support.
 [PASS] The temporary directory and its content are writable and not executable.
 [PASS] The logs directory and its content are writable.
 [PASS] GD or Imagick extension is installed.
 [PASS] Intl extension is installed.
 [PASS] Mbstring extension is installed.

 Config files

 [PASS] The application config file is present
 [PASS] The passbolt config file is present

 Core config

 [PASS] Debug mode is off.
 [PASS] Cache is working.
 [PASS] Unique value set for security.salt
 [PASS] Full base url is set to https://passbolt-prep.ceibal.edu.uy
 [PASS] App.fullBaseUrl validation OK.
 [FAIL] Could not reach the /healthcheck/status with the url specified in App.fullBaseUrl
 [HELP] Check that the domain name is correct in /var/www/passbolt/config/passbolt.php
 [HELP] Check the network settings

 SSL Certificate

 [WARN] SSL peer certificate does not validate
 [WARN] Hostname does not match when validating certificates.
 [WARN] Using a self-signed certificate
 [HELP] Check https://help.passbolt.com/faq/hosting/troubleshoot-ssl

 Database

 [PASS] The application is able to connect to the database
 [PASS] 31 tables found
 [PASS] Some default content is present
 [PASS] The database schema up to date.

 GPG Configuration

 [PASS] PHP GPG Module is installed and loaded.
 [PASS] The environment variable GNUPGHOME is set to /var/lib/nginx/.gnupg.
 [PASS] The directory /var/lib/nginx/.gnupg containing the keyring is writable by the webserver user.
 [PASS] The server OpenPGP key is not the default one
 [PASS] The public key file is defined in /var/www/passbolt/config/passbolt.php and readable.
 [PASS] The private key file is defined in /var/www/passbolt/config/passbolt.php and readable.
 [PASS] The server key fingerprint matches the one defined in /var/www/passbolt/config/passbolt.php.
 [PASS] The server public key defined in the /var/www/passbolt/config/passbolt.php (or environment variables) is in the keyring.
 [PASS] There is a valid email id defined for the server key.
 [PASS] The public key can be used to encrypt a message.
 [PASS] The private key can be used to sign a message.
 [PASS] The public and private keys can be used to encrypt and sign a message.
 [PASS] The private key can be used to decrypt a message.
 [PASS] The private key can be used to decrypt and verify a message.
 [PASS] The public key can be used to verify a signature.
 [PASS] The server public key format is Gopengpg compatible.
 [PASS] The server private key format is Gopengpg compatible.

 Application configuration

 [PASS] Using latest passbolt version (4.6.1).
 [PASS] Passbolt is configured to force SSL use.
 [PASS] App.fullBaseUrl is set to HTTPS.
 [PASS] Selenium API endpoints are disabled.
 [PASS] Search engine robots are told not to index content.
 [INFO] The Self Registration plugin is enabled.
 [INFO] Registration is closed, only administrators can add users.
 [WARN] The deprecated self registration public setting was found in /var/www/passbolt/config/passbolt.php.
 [HELP] You may remove the "passbolt.registration.public" setting.
 [WARN] Host availability checking is disabled.
 [HELP] Make sure this instance is not publicly available on the internet.
 [HELP] Or set the PASSBOLT_EMAIL_VALIDATE_MX environment variable to true.
 [HELP] Or set passbolt.email.validate.mx to true in /var/www/passbolt/config/passbolt.php.
 [PASS] Serving the compiled version of the javascript app.
 [WARN] Some email notifications are disabled by the administrator.

 JWT Authentication

 [PASS] The JWT Authentication plugin is enabled
 [PASS] The /var/www/passbolt/config/jwt/ directory is not writable.
 [PASS] A valid JWT key pair was found

 SMTP Settings

 [PASS] The SMTP Settings plugin is enabled.
 [PASS] SMTP Settings coherent. You may send a test email to validate them.
 [PASS] The SMTP Settings source is: database.
 [WARN] The SMTP Settings plugin endpoints are enabled.
 [HELP] It is recommended to disable the plugin endpoints.
 [HELP] Set the PASSBOLT_SECURITY_SMTP_SETTINGS_ENDPOINTS_DISABLED environment variable to true.
 [HELP] Or set passbolt.security.smtpSettings.endpointsDisabled to true in /var/www/passbolt/config/passbolt.php.

 [FAIL] 1 error(s) found. Hang in there!
cli-error.log

2024-04-10 14:49:07 error: [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups Groups LEFT JOIN groups_users GroupsUsers ON Groups.id = GroupsUsers.grou' at line 1 in /var/www/passbolt/vendor/cakephp/cakephp/src/Database/Statement/MysqlStatement.php on line 39
2024-04-10 16:40:51 error: [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups Groups LEFT JOIN groups_users GroupsUsers ON Groups.id = GroupsUsers.grou' at line 1 in /var/www/passbolt/vendor/cakephp/cakephp/src/Database/Statement/MysqlStatement.php on line 39
2024-04-10 16:48:06 error: [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups Groups LEFT JOIN groups_users GroupsUsers ON Groups.id = GroupsUsers.grou' at line 1 in /var/www/passbolt/vendor/cakephp/cakephp/src/Database/Statement/MysqlStatement.php on line 39

Fixed permissions error so error.log doesn’t show anything new

error.log

2024-04-10 13:22:00 Warning: Warning (2): session_start(): Failed to read session data: files (path: ) in [/var/www/passbolt/vendor/cakephp/cakephp/src/Http/Session.php, line 355]
2024-04-10 13:22:00 Error: [RuntimeException] Could not start the session in /var/www/passbolt/vendor/cakephp/cakephp/src/Http/Session.php on line 356
Request URL: /healthcheck/status.json
Client IP: 127.0.0.1
[root@passbolt-prep passbolt]# su -s /bin/bash -c "./bin/cake passbolt cleanup" nginx

     ____                  __          ____  
    / __ \____  _____ ____/ /_  ____  / / /_ 
   / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/ 
  / ____/ /_/ (__  |__  ) /_/ / /_/ / / /    
 /_/    \__,_/____/____/_.___/\____/_/\__/   

 Open source password manager for teams
-------------------------------------------------------------------------------
 Cleanup shell (fix mode)
-------------------------------------------------------------------------------
2024-04-10 17:01:52 error: [PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups Groups LEFT JOIN groups_users GroupsUsers ON Groups.id = GroupsUsers.grou' at line 1 in /var/www/passbolt/vendor/cakephp/cakephp/src/Database/Statement/MysqlStatement.php on line 39
<!DOCTYPE html>
<html class="passbolt no-js no-passboltplugin version" lang="en">
<head>
    <meta charset="utf-8">
    <title>Passbolt | An Internal Error Has Occurred.</title>
    <!--

        ____                  __          ____
       / __ \____  _____ ____/ /_  ____  / / /_
      / /_/ / __ `/ ___/ ___/ __ \/ __ \/ / __/
     / ____/ /_/ (__  )__  ) /_/ / /_/ / / /_
    /_/    \__,_/____/____/_.___/\____/_/\__/

    Open source password manager for teams
    Copyright (c) Passbolt SA (https://www.passbolt.com)


    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as
    published by the Free Software Foundation, either version 3 of the
    License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program. If not, see http://www.gnu.org/licenses/.


    -->
    <meta name="description" content="Open source password manager for teams">
    <meta name="keywords" content="Passbolt, password manager, online password manager, open source password manager">
    <meta name="robots" content="noindex, nofollow">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="shortcut icon" type="image/x-icon" href="https://passbolt-prep.ceibal.edu.uy/favicon.ico" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_32.png" sizes="32x32" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_57.png" sizes="57x57" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_76.png" sizes="76x76" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_96.png" sizes="96x96" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_128.png" sizes="128x128" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_192.png" sizes="192x192" />
    <link rel="icon" href="https://passbolt-prep.ceibal.edu.uy/favicon_228.png" sizes="228x228" />
    <base href="https://passbolt-prep.ceibal.edu.uy/">
    <link rel="stylesheet" href="https://passbolt-prep.ceibal.edu.uy/css/themes/default/api_main.min.css?v=4.6.1"></head>
<body spellcheck="false">
<div id="container" class="error page error-500">
<!-- header navigation -->
<header>
    <div class="header first ">
        <nav>
            <div class="top navigation primary">
                <ul>
                    <li class="left"><a href="https://passbolt-prep.ceibal.edu.uy/"><span>home</span></a></li>
                    <li class="right"><a href="https://passbolt-prep.ceibal.edu.uy/auth/login"><span>login</span></a></li>
                </ul>
            </div>
        </nav>
    </div>
</header>
<div id="content">
<div class="grid">
    <div class="row">
        <h2>An Internal Error Has Occurred</h2>
        <p class="error">
            An Internal Error Has Occurred.        </p>
    </div>
    </div>
</div>
</div>
<footer>
    <div class="footer">
        <ul class="footer-links">
            <li><a href="https://www.passbolt.com/terms">Terms</a></li>
            <li><a href="https://www.passbolt.com/credits">Credits</a></li>
            <li id="version">
                <a href="https://www.passbolt.com/credits" class="tooltip-left" data-tooltip="4.6.1">
                    <i class="fa fa-heart-o"></i>
                    <span class="visuallyhidden">Versions</span>
                </a>
            </li>
        </ul>
    </div>
</footer>
</div>
</body>
</html>
[root@passbolt-prep passbolt]# 

Could it be that Passbolt if just “incompatible” with Percona?

hey @fmq203 welcome to the forum!

For your test environment did you import a backup of your production data or are you starting with a fresh database?

Hey @fmq203 I did a quick test on Debian 12 with percona as the database and had no issues with a new install. Created some passwords and groups just to be sure.
Which it should be the same percona version that you mentioned:
mysql Ver 8.0.36-28 for Linux on x86_64 (Percona Server (GPL), Release '28', Revision '47601f19'$)

From what you’ve shared it looks like you installed from source, is that correct?

Additionally which linux distribution are you on?

I didn’t make the original install but I had to follow the “from source” update method.

I’m on CentOS 7