这是脚本的一小部分(即该脚本的第一行):当我尝试执行它时说我:
错误代码:1005。无法创建表'test.paese'(errno:150)0.062秒
当我尝试从 MySQL 执行“Forward Engineer”时,它回复了我一些问题:
如果 MySQL 从 CREATE TABLE 语句中报告错误号 1005,并且错误消息是指错误 150,则表创建失败,因为外键约束是没有正确形成。
`SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; 设置@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL'; 如果不存在 `test` 则创建 SCHEMA 默认字符集 latin1 COLLATE latin1_swedish_ci ; 使用`测试`; -------------------------------------------------- ----- -- 表`test`.`SETTORE` -------------------------------------------------- ----- 如果不存在 `test`.`SETTORE` ( `Comune` CHAR NOT NULL , `superficie` INT(11) NULL , 主键(`Comune`)) 引擎 = InnoDB; -------------------------------------------------- ----- -- 表`test`.`PAESE` -------------------------------------------------- ----- 如果不存在 `test`.`PAESE` ( `Nome-paese` CHAR NOT NULL , `Comune` CHAR NOT NULL , `num_abitanti` INT(11) NULL , `altitudine` INT(11) NULL , `IDpaese` INT(11) NOT NULL , PRIMARY KEY (`Nome-paese`, `Comune`) , 索引 `Comune` (`Comune` ASC) , 唯一索引 `idPAESE_UNIQUE` (`IDpaese` ASC) , 约束`公社` 外键(`Comune`) 参考 `test`.`SETTORE` (`Comune`) 删除设置为空 更新级联) 引擎 = InnoDB; -------------------------------------------------- ----- -- 表`test`.`PERIODO` -------------------------------------------------- ----- 如果不存在则创建表`test`.`PERIODO`( `Settimana` INT(11) NOT NULL , 主键(`Settimana`)) 引擎 = InnoDB; -------------------------------------------------- ----- -- 表 `test`.`TIPO-INIZIATIVA` -------------------------------------------------- ----- 如果不存在 `test`.`TIPO-INIZIATIVA`,则创建表( `Nome-tipo-iniziativa` CHAR NOT NULL , 主键 (`Nome-tipo-iniziativa`) ) 引擎 = InnoDB; -------------------------------------------------- ----- -- 表`test`.`INIZIATIVA` -------------------------------------------------- ----- 如果不存在 `test`.`INIZIATIVA`,则创建表( `Nome-tipo-iniziativa` CHAR NOT NULL , `Settimana` INT(11) NOT NULL , `Nome-paese` CHAR NOT NULL , `Comune` CHAR NOT NULL , `descrizione` VARCHAR(45) , `costo_intero` FLOAT NULL , `costo_ridotto` FLOAT NULL , `orario_apertura` 时间 NULL , `orario_chiusura` 时间 NULL , 主键(`Nome-tipo-iniziativa`,`Settimana`,`Nome-paese`,`Comune`), INDEX `Nome-paese` (`Nome-paese` ASC) , 索引 `Comune` (`Comune` ASC) , 索引`Settimana` (`Settimana` ASC) , 索引 `Nome-tipo-iniziativa` (`Nome-tipo-iniziativa` ASC) , 约束`Nome-paese` 外键(`Nome-paese`) 参考 `test`.`PAESE` (`Nome-paese` ) 删除设置为空 在更新级联时, 约束`公社` 外键(`Comune`) 参考 `test`.`PAESE` (`Comune`) 删除设置为空 在更新级联时, 约束`Settimana` 外键(`Settimana`) 参考 `test`.`PERIODO` (`Settimana` ) 删除设置为空 在更新级联时, 约束`Nome-tipo-iniziativa` 外键(`Nome-tipo-iniziativa`) 参考 `test`.`TIPO-INIZIATIVA` (`Nome-tipo-iniziativa` ) 删除设置为空 更新级联) 引擎= InnoDB;`
因此,DBMS 首先创建表SETTORE,然后在执行CREATE TABLE PAESE时停止。我在这些行中找不到错误,请帮助我,我非常需要它!