Si al instalar o actualizar PrestaShop nos encontramos un error similar al siguiente cuando realizar tareas sobre la base de datos, significa que por un error interno no es capaz de obtener la versión de MySQL que está en uso en el servidor:
[WARNING] Some commands could not be registered. An exception occurred in ConnectionFactory.php while establishing a connection to figure out your platform version. You can circumvent this by setting a 'server_version' configuration value. For further information, visit: https://github.com/doctrine/DoctrineBundle/issues/673. In AbstractMySQLDriver.php, an exception occurred in driver: SQLSTATE[HY000] [2026] SSL connection error: SSL_CTX_set_default_verify_paths failed. The same error is repeated in Exception.php and PDOConnection.php: SQLSTATE[HY000] [2026] SSL connection error: SSL_CTX_set_default_verify_paths failed.
Este error no es muy habitual, y nunca lo obtendrás usando el autoinstalador de aplicaciones de cPanel, pero si se diese el caso, hay dos posibles soluciones:
La extensión de PHP pdo_mysql
devuelve un código 1016 en lugar de 1013 para identificar la funcionalidad de MySQL MYSQL_ATTR_MULTI_STATEMENTS
. Para solucionar este problema, podemos cambiar la extensión de pdo_mysql
a nd_pdo_mysql
desde Seleccionar versión de PHP en cPanel:
Esta extensión tiene la misma funcionalidad que pdo_mysql
, y si devuelve el código 1013 en lugar de 1016, el esperado por PrestaShop, evitando el problema que se produce en la librería Doctrine.
La solución anterior es preferible, pero si no tienes opción de cambiar la extensión de PHP, puedes editar el fichero app/config/doctrine.yml
de PrestaShop.
En app/config/doctrine.yml
encontraremos la línea que empieza por el número 1013 en el apartado "options":
options: # PDO::MYSQL_ATTR_INIT_COMMAND 1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))" # PDO::MYSQL_ATTR_MULTI_STATEMENTS 1013: '%env(const:runtime:_PS_ALLOW_MULTI_STATEMENTS_QUERIES_)%
Solo tendremos que cambiar el 1013 por 1016:
options: # PDO::MYSQL_ATTR_INIT_COMMAND 1002: "SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))" # PDO::MYSQL_ATTR_MULTI_STATEMENTS 1016: '%env(const:runtime:_PS_ALLOW_MULTI_STATEMENTS_QUERIES_)%
Con esto quedaría solucionado y podremos tramitar la instalación o actualización sin errores.
Al no ser capaz de obtener la versión de MySQL, Prestashop realizar acciones no compatibles con la versión en uso, con este pequeño cambio evitamos el problema.