Tôi phải tạo một db với 2 bảng trong mysql nhưng kịch bản thất bại với errno 150 (vấn đề khóa ngoại). Tôi đã kiểm tra lại hai trường khóa ngoài là giống nhau trên cả hai bảng và tôi không thể tìm thấy lỗi nào.Mysql. Không thể tạo bảng errno 150
Đây là kịch bản:
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP SCHEMA IF EXISTS `testdb`;
CREATE SCHEMA IF NOT EXISTS `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
USE `testdb`;
DROP TABLE IF EXISTS `testdb`.`table1` ;
CREATE TABLE IF NOT EXISTS `testdb`.`table1` (
`id` INT UNSIGNED NOT NULL ,
`field1` VARCHAR(50) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
DROP TABLE IF EXISTS `testdb`.`table2` ;
CREATE TABLE IF NOT EXISTS `testdb`.`table2` (
`id` INT NOT NULL AUTO_INCREMENT ,
`field1` VARCHAR(50) NULL ,
`date` DATE NULL ,
`cnt` INT NULL ,
PRIMARY KEY (`id`) ,
INDEX `FK_table2_table1` (`field1` ASC) ,
CONSTRAINT `FK_table2_table1`
FOREIGN KEY (`field1`)
REFERENCES `testdb`.`table1` (`field1`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
Tôi đã thử nó trong Windows và Ubuntu với các phiên bản khác nhau của Mysql và đã không làm việc.
Bất kỳ ý tưởng nào? Cảm ơn rất nhiều.
Tôi cũng nhận được lỗi này bằng cách cố gắng tạo một bảng có ràng buộc FK cho bảng khác chưa tồn tại. Đó là một vấn đề dễ dàng để sửa chữa, thực hiện rất khó khăn bởi một thông báo lỗi hoàn toàn vô dụng. – Cerin
Đối với những người nhận được ở đây từ google, lỗi này cũng có thể xảy ra nếu bạn thực hiện một lỗi đánh máy trên tên bảng của nước ngoài. –