Everything used to work like a butter. I think we are running Ghost since 3.0 and had zero problems with updates in the past. Any idea how to fix it? Thanks for the help!
Debug Information:
OS: Ubuntu, v20.04.2 LTS
Node Version: v14.16.1
Ghost Version: 4.3.0
Ghost-CLI Version: 1.16.3
mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Environment: production
Command: ‘ghost update’
Message: Ghost was able to start, but errored during boot with: alter table members_products add constraint members_products_member_id_foreign foreign key (member_id) references members (id) on delete CASCADE - UNKNOWN_CODE_PLEASE_REPORT: Referencing column ‘member_id’ and referenced column ‘id’ in foreign key constraint ‘members_products_member_id_foreign’ are incompatible.
Help: Error occurred while executing the following migration: 02-add-members-products-table.js
Suggestion: journalctl -u ghost_blog-wavy -n 50
Stack: Error: Ghost was able to start, but errored during boot with: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - UNKNOWN_CODE_PLEASE_REPORT: Referencing column 'member_id' and referenced column 'id' in foreign key constraint 'members_products_member_id_foreign' are incompatible.
at Server.<anonymous> (/usr/local/lib/node_modules/ghost-cli/lib/utils/port-polling.js:53:28)
at Object.onceWrapper (events.js:421:28)
at Server.emit (events.js:315:20)
at emitCloseNT (net.js:1659:8)
at processTicksAndRejections (internal/process/task_queues.js:79:21)
Running ghost-doctor does not help/show any problems. Reboot does not help either.
I don’t think so. We only thing we did update recently was Ubuntu version (not sure if MySQL got updated as well), which forced us to reinstall node and npm. After that we updated from latest 3.x.x. to new 4 version without problems. Today I tried to update ghost-cli which worked fine and then ghost update to newest version.
Currently we are running mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Which MySQL version should be used, should we roll back to old version? Thanks!
I am experiencing this issue as well after upgrading Ghost from v4.2.2 to v4.3.0. I’ve been running Ghost since v3.31 and encountered a similar error during upgrades before, but the usual fix (temporarily turning off foreign key checks using SET GLOBAL FOREIGN_KEY_CHECKS = 0;) did not work this time, or rather, it resulted in a different error.
Debug Information OS: Debian Buster v10.9.0 Node: v14.16.1 Ghost: v4.3.0 Ghost-CLI: v1.16.3 Database: mysql Ver 15.1 Distrib 10.5.9-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 Environment: production Command: ghost run
Debug logs
Apr 21 11:53:59 pdh systemd[1]: Started Ghost.
Apr 21 11:54:00 pdh node[8958]: - Inspecting operating system
Apr 21 11:54:02 pdh node[8958]: [2021-04-21 09:54:02] INFO Ghost is running in production...
Apr 21 11:54:02 pdh node[8958]: [2021-04-21 09:54:02] INFO Your site is now available on <redacted>
Apr 21 11:54:02 pdh node[8958]: [2021-04-21 09:54:02] INFO Ctrl+C to shut down
Apr 21 11:54:02 pdh node[8958]: [2021-04-21 09:54:02] INFO Ghost server started in 1.136s
Apr 21 11:54:02 pdh node[8958]: [2021-04-21 09:54:02] WARN Database state requires migration.
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Creating database backup
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Database backup written to: <redacted>
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Adding table: products
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Adding table: members_products
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Dropping table: members_products
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] INFO Dropping table: products
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] ERROR alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 11:54:03 pdh node[8958]:
Apr 21 11:54:03 pdh node[8958]: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 11:54:03 pdh node[8958]: {"config":{"transaction":false},"name":"02-add-members-products-table.js"}
Apr 21 11:54:03 pdh node[8958]: "Error occurred while executing the following migration: 02-add-members-products-table.js"
Apr 21 11:54:03 pdh node[8958]: Error ID:
Apr 21 11:54:03 pdh node[8958]: 300
Apr 21 11:54:03 pdh node[8958]: Error Code:
Apr 21 11:54:03 pdh node[8958]: ER_FK_INCORRECT_OPTION
Apr 21 11:54:03 pdh node[8958]: ----------------------------------------
Apr 21 11:54:03 pdh node[8958]: MigrationScriptError: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 11:54:03 pdh node[8958]: at MigrationScriptError.KnexMigrateError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:7:26)
Apr 21 11:54:03 pdh node[8958]: at new MigrationScriptError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:25:26)
Apr 21 11:54:03 pdh node[8958]: at /opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/index.js:1055:19
Apr 21 11:54:03 pdh node[8958]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 11:54:03 pdh node[8958]: Error: ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 11:54:03 pdh node[8958]: at Query.Sequence._packetToError (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
Apr 21 11:54:03 pdh node[8958]: at Query.ErrorPacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
Apr 21 11:54:03 pdh node[8958]: at Protocol._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:291:23)
Apr 21 11:54:03 pdh node[8958]: at Parser._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:433:10)
Apr 21 11:54:03 pdh node[8958]: at Parser.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:43:10)
Apr 21 11:54:03 pdh node[8958]: at Protocol.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:38:16)
Apr 21 11:54:03 pdh node[8958]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:88:28)
Apr 21 11:54:03 pdh node[8958]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:526:10)
Apr 21 11:54:03 pdh node[8958]: at Socket.emit (events.js:315:20)
Apr 21 11:54:03 pdh node[8958]: at addChunk (internal/streams/readable.js:309:12)
Apr 21 11:54:03 pdh node[8958]: at readableAddChunk (internal/streams/readable.js:284:9)
Apr 21 11:54:03 pdh node[8958]: at Socket.Readable.push (internal/streams/readable.js:223:10)
Apr 21 11:54:03 pdh node[8958]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Apr 21 11:54:03 pdh node[8958]: --------------------
Apr 21 11:54:03 pdh node[8958]: at Protocol._enqueue (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:144:48)
Apr 21 11:54:03 pdh node[8958]: at Connection.query (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:198:25)
Apr 21 11:54:03 pdh node[8958]: at /opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:134:18
Apr 21 11:54:03 pdh node[8958]: at new Promise (<anonymous>)
Apr 21 11:54:03 pdh node[8958]: at Client_MySQL._query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:128:12)
Apr 21 11:54:03 pdh node[8958]: at Client_MySQL.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/client.js:168:17)
Apr 21 11:54:03 pdh node[8958]: at Runner.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:151:36)
Apr 21 11:54:03 pdh node[8958]: at Runner.queryArray (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:248:31)
Apr 21 11:54:03 pdh node[8958]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 11:54:03 pdh node[8958]: at async /opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:277:18
Apr 21 11:54:03 pdh node[8958]: at async Object.up (/opt/ghost/versions/4.3.0/core/server/data/migrations/utils.js:239:13)
Apr 21 11:54:03 pdh node[8958]:
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] WARN Ghost is shutting down
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] WARN Ghost has shut down
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] WARN Your site is now offline
Apr 21 11:54:03 pdh node[8958]: [2021-04-21 09:54:03] WARN Ghost was running for a few seconds
Apr 21 11:54:04 pdh node[8958]: /usr/lib/node_modules/ghost-cli/lib/process-manager.js:46
Apr 21 11:54:04 pdh node[8958]: throw error;
Apr 21 11:54:04 pdh node[8958]: ^
Apr 21 11:54:04 pdh node[8958]: {
Apr 21 11:54:04 pdh node[8958]: message: "Ghost was able to start, but errored during boot with: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'"
Apr 21 11:54:04 pdh node[8958]: }
Apr 21 11:54:04 pdh systemd[1]: ghost.service: Main process exited, code=exited, status=1/FAILURE
Apr 21 11:54:04 pdh systemd[1]: ghost.service: Failed with result 'exit-code'.
Apr 21 11:59:58 pdh systemd[1]: Started Ghost.
Apr 21 11:59:59 pdh node[20371]: - Inspecting operating system
Apr 21 12:00:00 pdh node[20371]: [2021-04-21 10:00:00] INFO Ghost is running in production...
Apr 21 12:00:00 pdh node[20371]: [2021-04-21 10:00:00] INFO Your site is now available on https://blog.datahoarder.dev/
Apr 21 12:00:00 pdh node[20371]: [2021-04-21 10:00:00] INFO Ctrl+C to shut down
Apr 21 12:00:00 pdh node[20371]: [2021-04-21 10:00:00] INFO Ghost server started in 1.095s
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] WARN Database state requires migration.
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Creating database backup
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Database backup written to: /opt/ghost/content/data/self-hosting-for-dummies.ghost.2021-04-21-10-00-01.json
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Adding table: products
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Adding table: members_products
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Dropping table: members_products
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] INFO Dropping table: products
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] ERROR alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:00:01 pdh node[20371]:
Apr 21 12:00:01 pdh node[20371]: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:00:01 pdh node[20371]: {"config":{"transaction":false},"name":"02-add-members-products-table.js"}
Apr 21 12:00:01 pdh node[20371]: "Error occurred while executing the following migration: 02-add-members-products-table.js"
Apr 21 12:00:01 pdh node[20371]: Error ID:
Apr 21 12:00:01 pdh node[20371]: 300
Apr 21 12:00:01 pdh node[20371]: Error Code:
Apr 21 12:00:01 pdh node[20371]: ER_FK_INCORRECT_OPTION
Apr 21 12:00:01 pdh node[20371]: ----------------------------------------
Apr 21 12:00:01 pdh node[20371]: MigrationScriptError: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:00:01 pdh node[20371]: at MigrationScriptError.KnexMigrateError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:7:26)
Apr 21 12:00:01 pdh node[20371]: at new MigrationScriptError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:25:26)
Apr 21 12:00:01 pdh node[20371]: at /opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/index.js:1055:19
Apr 21 12:00:01 pdh node[20371]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:00:01 pdh node[20371]: Error: ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:00:01 pdh node[20371]: at Query.Sequence._packetToError (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
Apr 21 12:00:01 pdh node[20371]: at Query.ErrorPacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
Apr 21 12:00:01 pdh node[20371]: at Protocol._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:291:23)
Apr 21 12:00:01 pdh node[20371]: at Parser._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:433:10)
Apr 21 12:00:01 pdh node[20371]: at Parser.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:43:10)
Apr 21 12:00:01 pdh node[20371]: at Protocol.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:38:16)
Apr 21 12:00:01 pdh node[20371]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:88:28)
Apr 21 12:00:01 pdh node[20371]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:526:10)
Apr 21 12:00:01 pdh node[20371]: at Socket.emit (events.js:315:20)
Apr 21 12:00:01 pdh node[20371]: at addChunk (internal/streams/readable.js:309:12)
Apr 21 12:00:01 pdh node[20371]: at readableAddChunk (internal/streams/readable.js:284:9)
Apr 21 12:00:01 pdh node[20371]: at Socket.Readable.push (internal/streams/readable.js:223:10)
Apr 21 12:00:01 pdh node[20371]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Apr 21 12:00:01 pdh node[20371]: --------------------
Apr 21 12:00:01 pdh node[20371]: at Protocol._enqueue (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:144:48)
Apr 21 12:00:01 pdh node[20371]: at Connection.query (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:198:25)
Apr 21 12:00:01 pdh node[20371]: at /opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:134:18
Apr 21 12:00:01 pdh node[20371]: at new Promise (<anonymous>)
Apr 21 12:00:01 pdh node[20371]: at Client_MySQL._query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:128:12)
Apr 21 12:00:01 pdh node[20371]: at Client_MySQL.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/client.js:168:17)
Apr 21 12:00:01 pdh node[20371]: at Runner.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:151:36)
Apr 21 12:00:01 pdh node[20371]: at Runner.queryArray (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:248:31)
Apr 21 12:00:01 pdh node[20371]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:00:01 pdh node[20371]: at async /opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:277:18
Apr 21 12:00:01 pdh node[20371]: at async Object.up (/opt/ghost/versions/4.3.0/core/server/data/migrations/utils.js:239:13)
Apr 21 12:00:01 pdh node[20371]:
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] WARN Ghost is shutting down
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] WARN Ghost has shut down
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] WARN Your site is now offline
Apr 21 12:00:01 pdh node[20371]: [2021-04-21 10:00:01] WARN Ghost was running for a few seconds
Apr 21 12:00:02 pdh node[20371]: /usr/lib/node_modules/ghost-cli/lib/process-manager.js:46
Apr 21 12:00:02 pdh node[20371]: throw error;
Apr 21 12:00:02 pdh node[20371]: ^
Apr 21 12:00:02 pdh node[20371]: {
Apr 21 12:00:02 pdh node[20371]: message: "Ghost was able to start, but errored during boot with: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'"
Apr 21 12:00:02 pdh node[20371]: }
Apr 21 12:00:02 pdh systemd[1]: ghost.service: Main process exited, code=exited, status=1/FAILURE
Apr 21 12:00:02 pdh systemd[1]: ghost.service: Failed with result 'exit-code'.
Debug logs with foreign key checks disabled
Apr 21 12:14:59 pdh systemd[1]: Started Ghost.
Apr 21 12:15:00 pdh node[14092]: - Inspecting operating system
Apr 21 12:15:01 pdh node[14092]: [2021-04-21 10:15:01] INFO Ghost is running in production...
Apr 21 12:15:01 pdh node[14092]: [2021-04-21 10:15:01] INFO Your site is now available on <redacted>
Apr 21 12:15:01 pdh node[14092]: [2021-04-21 10:15:01] INFO Ctrl+C to shut down
Apr 21 12:15:01 pdh node[14092]: [2021-04-21 10:15:01] INFO Ghost server started in 1.062s
Apr 21 12:15:02 pdh node[14092]: [2021-04-21 10:15:02] WARN Database state requires migration.
Apr 21 12:15:02 pdh node[14092]: [2021-04-21 10:15:02] INFO Creating database backup
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] INFO Database backup written to: <redacted>
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] INFO Adding table: products
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] INFO Adding table: members_products
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] INFO Dropping table: members_products
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] INFO Dropping table: products
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] ERROR alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_CANT_CREATE_TABLE: Can't create table `app_db_ghost`.`members_products` (errno: 150 "Foreign key constraint is incorrectly formed")
Apr 21 12:15:03 pdh node[14092]:
Apr 21 12:15:03 pdh node[14092]: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_CANT_CREATE_TABLE: Can't create table `app_db_ghost`.`members_products` (errno: 150 "Foreign key constraint is incorrectly formed")
Apr 21 12:15:03 pdh node[14092]: {"config":{"transaction":false},"name":"02-add-members-products-table.js"}
Apr 21 12:15:03 pdh node[14092]: "Error occurred while executing the following migration: 02-add-members-products-table.js"
Apr 21 12:15:03 pdh node[14092]: Error ID:
Apr 21 12:15:03 pdh node[14092]: 300
Apr 21 12:15:03 pdh node[14092]: Error Code:
Apr 21 12:15:03 pdh node[14092]: ER_CANT_CREATE_TABLE
Apr 21 12:15:03 pdh node[14092]: ----------------------------------------
Apr 21 12:15:03 pdh node[14092]: MigrationScriptError: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_CANT_CREATE_TABLE: Can't create table `app_db_ghost`.`members_products` (errno: 150 "Foreign key constraint is incorrectly formed")
Apr 21 12:15:03 pdh node[14092]: at MigrationScriptError.KnexMigrateError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:7:26)
Apr 21 12:15:03 pdh node[14092]: at new MigrationScriptError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:25:26)
Apr 21 12:15:03 pdh node[14092]: at /opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/index.js:1055:19
Apr 21 12:15:03 pdh node[14092]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:15:03 pdh node[14092]: Error: ER_CANT_CREATE_TABLE: Can't create table `app_db_ghost`.`members_products` (errno: 150 "Foreign key constraint is incorrectly formed")
Apr 21 12:15:03 pdh node[14092]: at Query.Sequence._packetToError (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
Apr 21 12:15:03 pdh node[14092]: at Query.ErrorPacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
Apr 21 12:15:03 pdh node[14092]: at Protocol._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:291:23)
Apr 21 12:15:03 pdh node[14092]: at Parser._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:433:10)
Apr 21 12:15:03 pdh node[14092]: at Parser.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:43:10)
Apr 21 12:15:03 pdh node[14092]: at Protocol.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:38:16)
Apr 21 12:15:03 pdh node[14092]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:88:28)
Apr 21 12:15:03 pdh node[14092]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:526:10)
Apr 21 12:15:03 pdh node[14092]: at Socket.emit (events.js:315:20)
Apr 21 12:15:03 pdh node[14092]: at addChunk (internal/streams/readable.js:309:12)
Apr 21 12:15:03 pdh node[14092]: at readableAddChunk (internal/streams/readable.js:284:9)
Apr 21 12:15:03 pdh node[14092]: at Socket.Readable.push (internal/streams/readable.js:223:10)
Apr 21 12:15:03 pdh node[14092]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Apr 21 12:15:03 pdh node[14092]: --------------------
Apr 21 12:15:03 pdh node[14092]: at Protocol._enqueue (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:144:48)
Apr 21 12:15:03 pdh node[14092]: at Connection.query (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:198:25)
Apr 21 12:15:03 pdh node[14092]: at /opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:134:18
Apr 21 12:15:03 pdh node[14092]: at new Promise (<anonymous>)
Apr 21 12:15:03 pdh node[14092]: at Client_MySQL._query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:128:12)
Apr 21 12:15:03 pdh node[14092]: at Client_MySQL.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/client.js:168:17)
Apr 21 12:15:03 pdh node[14092]: at Runner.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:151:36)
Apr 21 12:15:03 pdh node[14092]: at Runner.queryArray (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:248:31)
Apr 21 12:15:03 pdh node[14092]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:15:03 pdh node[14092]: at async /opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:277:18
Apr 21 12:15:03 pdh node[14092]: at async Object.up (/opt/ghost/versions/4.3.0/core/server/data/migrations/utils.js:239:13)
Apr 21 12:15:03 pdh node[14092]:
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] WARN Ghost is shutting down
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] WARN Ghost has shut down
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] WARN Your site is now offline
Apr 21 12:15:03 pdh node[14092]: [2021-04-21 10:15:03] WARN Ghost was running for a few seconds
Apr 21 12:15:04 pdh node[14092]: /usr/lib/node_modules/ghost-cli/lib/process-manager.js:46
Apr 21 12:15:04 pdh node[14092]: throw error;
Apr 21 12:15:04 pdh node[14092]: ^
Apr 21 12:15:04 pdh node[14092]: {
Apr 21 12:15:04 pdh node[14092]: message: 'Ghost was able to start, but errored during boot with: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_CANT_CREATE_TABLE: Can\'t create table `app_db_ghost`.`members_products` (errno: 150 "Foreign key constraint is incorrectly formed")'
Apr 21 12:15:04 pdh node[14092]: }
Apr 21 12:15:04 pdh systemd[1]: ghost.service: Main process exited, code=exited, status=1/FAILURE
Apr 21 12:15:04 pdh systemd[1]: ghost.service: Failed with result 'exit-code'.
Apr 21 12:54:06 pdh systemd[1]: Started Ghost.
Apr 21 12:54:07 pdh node[2400]: - Inspecting operating system
Apr 21 12:54:09 pdh node[2400]: [2021-04-21 10:54:09] INFO Ghost is running in production...
Apr 21 12:54:09 pdh node[2400]: [2021-04-21 10:54:09] INFO Your site is now available on https://blog.datahoarder.dev/
Apr 21 12:54:09 pdh node[2400]: [2021-04-21 10:54:09] INFO Ctrl+C to shut down
Apr 21 12:54:09 pdh node[2400]: [2021-04-21 10:54:09] INFO Ghost server started in 1.114s
Apr 21 12:54:09 pdh node[2400]: [2021-04-21 10:54:09] WARN Database state requires migration.
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Creating database backup
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Database backup written to: /opt/ghost/content/data/self-hosting-for-dummies.ghost.2021-04-21-10-54-10.json
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Adding table: products
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Adding table: members_products
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Dropping table: members_products
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] INFO Dropping table: products
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] ERROR alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:54:10 pdh node[2400]:
Apr 21 12:54:10 pdh node[2400]: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:54:10 pdh node[2400]: {"config":{"transaction":false},"name":"02-add-members-products-table.js"}
Apr 21 12:54:10 pdh node[2400]: "Error occurred while executing the following migration: 02-add-members-products-table.js"
Apr 21 12:54:10 pdh node[2400]: Error ID:
Apr 21 12:54:10 pdh node[2400]: 300
Apr 21 12:54:10 pdh node[2400]: Error Code:
Apr 21 12:54:10 pdh node[2400]: ER_FK_INCORRECT_OPTION
Apr 21 12:54:10 pdh node[2400]: ----------------------------------------
Apr 21 12:54:10 pdh node[2400]: MigrationScriptError: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:54:10 pdh node[2400]: at MigrationScriptError.KnexMigrateError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:7:26)
Apr 21 12:54:10 pdh node[2400]: at new MigrationScriptError (/opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/errors.js:25:26)
Apr 21 12:54:10 pdh node[2400]: at /opt/ghost/versions/4.3.0/node_modules/knex-migrator/lib/index.js:1055:19
Apr 21 12:54:10 pdh node[2400]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:54:10 pdh node[2400]: Error: ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'
Apr 21 12:54:10 pdh node[2400]: at Query.Sequence._packetToError (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Sequence.js:47:14)
Apr 21 12:54:10 pdh node[2400]: at Query.ErrorPacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/sequences/Query.js:79:18)
Apr 21 12:54:10 pdh node[2400]: at Protocol._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:291:23)
Apr 21 12:54:10 pdh node[2400]: at Parser._parsePacket (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:433:10)
Apr 21 12:54:10 pdh node[2400]: at Parser.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Parser.js:43:10)
Apr 21 12:54:10 pdh node[2400]: at Protocol.write (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:38:16)
Apr 21 12:54:10 pdh node[2400]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:88:28)
Apr 21 12:54:10 pdh node[2400]: at Socket.<anonymous> (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:526:10)
Apr 21 12:54:10 pdh node[2400]: at Socket.emit (events.js:315:20)
Apr 21 12:54:10 pdh node[2400]: at addChunk (internal/streams/readable.js:309:12)
Apr 21 12:54:10 pdh node[2400]: at readableAddChunk (internal/streams/readable.js:284:9)
Apr 21 12:54:10 pdh node[2400]: at Socket.Readable.push (internal/streams/readable.js:223:10)
Apr 21 12:54:10 pdh node[2400]: at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
Apr 21 12:54:10 pdh node[2400]: --------------------
Apr 21 12:54:10 pdh node[2400]: at Protocol._enqueue (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/protocol/Protocol.js:144:48)
Apr 21 12:54:10 pdh node[2400]: at Connection.query (/opt/ghost/versions/4.3.0/node_modules/mysql/lib/Connection.js:198:25)
Apr 21 12:54:10 pdh node[2400]: at /opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:134:18
Apr 21 12:54:10 pdh node[2400]: at new Promise (<anonymous>)
Apr 21 12:54:10 pdh node[2400]: at Client_MySQL._query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/dialects/mysql/index.js:128:12)
Apr 21 12:54:10 pdh node[2400]: at Client_MySQL.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/client.js:168:17)
Apr 21 12:54:10 pdh node[2400]: at Runner.query (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:151:36)
Apr 21 12:54:10 pdh node[2400]: at Runner.queryArray (/opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:248:31)
Apr 21 12:54:10 pdh node[2400]: at processTicksAndRejections (internal/process/task_queues.js:93:5)
Apr 21 12:54:10 pdh node[2400]: at async /opt/ghost/versions/4.3.0/node_modules/knex/lib/runner.js:277:18
Apr 21 12:54:10 pdh node[2400]: at async Object.up (/opt/ghost/versions/4.3.0/core/server/data/migrations/utils.js:239:13)
Apr 21 12:54:10 pdh node[2400]:
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] WARN Ghost is shutting down
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] WARN Ghost has shut down
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] WARN Your site is now offline
Apr 21 12:54:10 pdh node[2400]: [2021-04-21 10:54:10] WARN Ghost was running for a few seconds
Apr 21 12:54:11 pdh node[2400]: /usr/lib/node_modules/ghost-cli/lib/process-manager.js:46
Apr 21 12:54:11 pdh node[2400]: throw error;
Apr 21 12:54:11 pdh node[2400]: ^
Apr 21 12:54:11 pdh node[2400]: {
Apr 21 12:54:11 pdh node[2400]: message: "Ghost was able to start, but errored during boot with: alter table `members_products` add constraint `members_products_member_id_foreign` foreign key (`member_id`) references `members` (`id`) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table 'members_products'. Incorrect options in FOREIGN KEY constraint 'app_db_ghost/members_products_member_id_foreign'"
Apr 21 12:54:11 pdh node[2400]: }
Apr 21 12:54:11 pdh systemd[1]: ghost.service: Main process exited, code=exited, status=1/FAILURE
Apr 21 12:54:11 pdh systemd[1]: ghost.service: Failed with result 'exit-code'.
I did check my collation for ghost database and it seems to be correct. I did alter it just in case and rebooted server, but no change. Same error then trying to update ghost.
mysql> SELECT SCHEMA_NAME
-> DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM
-> INFORMATION_SCHEMA.SCHEMATA WHERE
-> SCHEMA_NAME='ghostdb';
+----------------------------+------------------------+
| DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
+----------------------------+------------------------+
| ghostdb | utf8mb4_general_ci |
+----------------------------+------------------------+
1 row in set (0.00 sec)
If you have the “are incompatible” type errors you need to check the collation on all of your tables because when the default collation changes new tables will be created with a different collation to the old ones. There are multiple similar reports on the forum when searching, here’s one example Migration error after upgrading from 3.32.2 to 3.33.0
@whalehub that’s looks like a different error, please don’t hijack existing topics because it makes helping a lot harder when responses are split across multiple different problems.
The droplet was created within the last month, but I did run do-release-upgrade to upgrade to Ubuntu 20.04 from 18.04. (Don’t know if that’s relevant, but the OP did mention upgrading Ubuntu recently too.)
What makes you think that it’s a different issue? The error messages are identical. The different error codes at the end are due to @Jack_Oakley using MySQL whereas I’m using MariaDB.
Jack_Oakley’s logs
Message: Ghost was able to start, but errored during boot with: alter table members_products add constraint members_products_member_id_foreign foreign key ( member_id ) references members ( id ) on delete CASCADE - UNKNOWN_CODE_PLEASE_REPORT: Referencing column ‘member_id’ and referenced column ‘id’ in foreign key constraint ‘members_products_member_id_foreign’ are incompatible.
My logs
message: “Ghost was able to start, but errored during boot with: alter table members_products add constraint members_products_member_id_foreign foreign key (member_id) references members (id) on delete CASCADE - ER_FK_INCORRECT_OPTION: Failed to add the foreign key constraint on table ‘members_products’. Incorrect options in FOREIGN KEY constraint ‘app_db_ghost/members_products_member_id_foreign’”
@Jack_Oakley can you query for charset rather than collation for your members table? Plus your earlier default charset/collation query had a bug where it showed the schema name rather than character set
mysql> SELECT SCHEMA_NAME
-> DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM
-> INFORMATION_SCHEMA.SCHEMATA WHERE
-> SCHEMA_NAME='ghostdb';
should have been:
mysql> SELECT
-> DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM
-> INFORMATION_SCHEMA.SCHEMATA WHERE
-> SCHEMA_NAME='ghostdb';
Sadly not. It’s my production server so when I saw others were having the same issue I nuked it and restored from the backup I took immediately beforehand.
Hi, everyone! I received the same error. Here is my log output, in case it helps:
Debug Information:
OS: Ubuntu, v20.04.2 LTS
Node Version: v12.22.1
Ghost Version: 4.3.2
Ghost-CLI Version: 1.16.3
Environment: production
Command: ‘ghost update’
Message: Ghost was able to start, but errored during boot with: alter table members_products add constraint members_products_member_id_foreign foreign key (member_id) references members (id) on delete CASCADE - UNKNOWN_CODE_PL>Help: Error occurred while executing the following migration: 02-add-members-products-table.js
Suggestion: journalctl -u ghost_104-236-56-158 -n 50
Stack: Error: Ghost was able to start, but errored during boot with: alter table members_products add constraint members_products_member_id_foreign foreign key (member_id) references members (id) on delete CASCADE - UNKNOWN_CO> at Server. (/usr/lib/node_modules/ghost-cli/lib/utils/port-polling.js:53:28)
at Object.onceWrapper (events.js:420:28)
at Server.emit (events.js:314:20)
at emitCloseNT (net.js:1657:8)
at processTicksAndRejections (internal/process/task_queues.js:83:21)
I’m on the ghost digitalocean marketplace image. Didn’t change much besides upgrading to the latest Ubuntu LTS version.
So I assume many people using the Digital Ocean marketplace image will run into this.