Мне нужно создать db с двумя таблицами в mysql, но сбой скрипта с errno 150 (проблема с внешним ключом). Я дважды проверил поля внешнего ключа, чтобы они были одинаковыми на обеих таблицах, и я не могу найти никаких ошибок.Mysql. Не удается создать таблицу errno 150
Вот сценарий:
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;
Я пробовал в Windows, и Ubuntu с разными версиями Mysql и не работал.
Любые идеи? Большое спасибо.
Я также получил эту ошибку, пытаясь создать таблицу с ограничением FK для другой таблицы, которая еще не существовала. Это простая проблема для исправления, очень сложная из-за совершенно бесполезного сообщения об ошибке. – Cerin
Для тех, кто попадает сюда из Google, эта ошибка также может произойти, если вы опечатаете имя таблицы внешнего ключа. –