If your MySQL database is not correctly configured for Ghost then you may run into some issues.
The solutions given are for self-hosted Ghost developers who are using the supported install method with
ghost-cli. If you’re having problems with an unsupported custom install, check out the forum.
If you’re seeing an
ECONNREFUSED error which refers to port
3306, Ghost wasn’t able to connect to your MySQL server and you need to check if your server is running via the command line.
To fix this issue:
- Ensure the server is running with
sudo service mysql start
- Test that the server is now running by typing
mysqlin the command line and checking the response
- If this error occurred after using
ghost install, once resolved re-run the setup phase using
You may see this error if your database has
ANSI_QUOTES mode enabled, which is not supported. To fix this issue, disable
ANSI_QUOTES mode in your MySQL config. Combination modes such as
ANSI which include
ANSI_QUOTES should also be disabled.
To fix this issue:
- Open your
sudo find / -name my.cnf
row_format of a table determines how it is stored, and this introduces limits on the size of the data. Older versions of MySQL and MariaDB used a different default
REDUNDANT, which have stricter row size limits. The default on the latest version is
DYNAMIC, which is what we support.
In MariaDB 10.1 and before, and in MySQL 5.6 and before, the COMPACT row format was the default row format. - https://mariadb.com/kb/en/troubleshooting-row-size-too-large-errors-with-innodb/
To confirm if your database is affected:
show table status;whilst attached to the database in MySQL
REDUNDANT, this table needs updating to
To fix this issue MySQL should be updated to the latest version and all tables used by Ghost should be converted to the
- Ensure you have a recent backup of your database
- Update MySQL to the latest supported version (so the default is
- For each table, run
ALTER TABLE <table> ROW_FORMAT=DYNAMIC;
show table status;should report all tables are
DYNAMICand the problem should be solved
ER_CANT_CREATE_TABLE with “Foreign key constraint is incorrectly formed”
MySQL is unable to create tables with foreign keys referencing tables using a different collation. This usually occurs after upgrading to MySQL 8 from an earlier version:
The default collation for utf8mb4 differs between MySQL 5.7 and 8.0 (
utf8mb4_0900_ai_cifor 8.0). - https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html
To fix this issue, ensure that all tables use the same collation as the default connection collation. You can find this by checking the value for
show variables like '%collation_connection%';.