В моей локальной базе данных (localhost: 3306, mysql 5.7.20) все работает нормально.
но в базе данных aws RDS (mysql 5.7.22) возникает ошибка Unhandled rejection SequelizeDatabaseError: Cannot add foreign key constraint
.
полный журнал ниже.
Executing (default):
CREATE TABLE IF NOT EXISTS `folders`
(`id` CHAR(36) BINARY , `folderName` VARCHAR(255),
`folderCoverImage` VARCHAR(255), `createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NOT NULL, `fk_user_id` CHAR(36) BINARY,
`fk_category_id` CHAR(36) BINARY,
PRIMARY KEY (`id`),
FOREIGN KEY (`fk_user_id`) REFERENCES `users` (`id`)
ON DELETE CASCADE ON UPDATE RESTRICT,
FOREIGN KEY (`fk_category_id`) REFERENCES `categories` (`id`)
ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB;
Unhandled rejection SequelizeDatabaseError: Cannot add foreign key constraint
пользователей:
CREATE TABLE IF NOT EXISTS `users` (`id` CHAR(36) BINARY , `username` VARCHAR(255), `email` VARCHAR(255) UNIQUE, `socialProvider` VARCHAR(255), `profileImg` TEXT, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
категории:
CREATE TABLE IF NOT EXISTS `categories` (`id` CHAR(36) BINARY , `name` VARCHAR(255) UNIQUE, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Выполнение (по умолчанию): ПОКАЗАТЬ ИНДЕКС ОТ categories
и мой код node.js здесь.
Folder.associate = function associate () {
Folder.belongsTo(User, {
foreignKey: 'fk_user_id',
onDelete: 'CASCADE',
onUpdate: 'restrict'
});
Folder.hasMany(Work, {
as: 'Work',
foreignKey: 'fk_folder_id',
onDelete: 'CASCADE',
onUpdate: 'restrict'
});
Folder.belongsTo(Category, {
as: 'Category',
foreignKey: 'fk_category_id'
});
};
также, пользователи таблиц, категории, записи, теги существовали.
Создать заказ стола можно здесь http://sqlfiddle.com/#!9/2162ca
Я не знаю, почему это не работает на AWS RDS.