Я должен создать базу данных с двумя таблицами в MySQL, но сценарий завершается с ошибкой 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 и не работал.
Есть идеи?