我必须在MySQL中创建一个包含两个表的数据库,但是该脚本因errno 150(外键问题)而失败。我仔细检查了两个表上的外键字段是否相同,但找不到任何错误。
这是脚本:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@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 SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
我已经在Windows和Ubuntu中使用不同版本的MySQL进行了尝试,但无法正常工作。
有任何想法吗?
table1.field1
没有定义索引。
需要对施加FOREIGN KEY
约束field1
。
有了这个:
CREATE TABLE IF NOT EXISTS `testdb`.`table1` (
`id` INT UNSIGNED NOT NULL ,
`field1` VARCHAR(50) NULL ,
KEY ix_table1_field1 (field1),
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
然后一切都将按预期工作。
运行时收到此错误。
我在创建sessionFactory对象时遇到问题。我将Hibernate与Maven和MySQL一起使用。怎么修? 日志错误: xml(在src/main/resources中): users.hbm.xml(在src/main/users.hbm.xml中):
问题内容: 我正在尝试导入.sql文件及其在创建表时失败。 这是失败的查询: 我从同一数据库中导出了.sql,删除了所有表,现在我试图导入它,为什么会失败? MySQL:无法建立表格’./dbname/data.frm’(错误号:150) 问题答案: 从MySQL-外键约束文档: 如果重新创建已删除的表,则该表必须具有符合引用该表的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引
我刚开始使用hibernate,总是会遇到这样的错误: 错误:HHH000388:不成功:创建表用户(id bigint not null auto_increment,mail varchar(255),passwort varchar(255),primary key(id))错误:从存储引擎获取错误-1 这是我的映射类:
我刚刚创建了一个新模式 我为要创建的表命名,但出现以下错误: 我搜索了错误,发现原因是我键入了保留字,如“order ”,但table2不可能是保留字,我尝试了许多不同的名称,总是得到相同的消息。列名未激活,所以我无法输入列名。
我试图在我的DB2V10.5中创建DB2 MQT表,但是我得到了以下错误消息: 在“begin-of-statement”后面发现意外的令牌“CREATE TABLE T_MQT AS(SELECT ID,COL1,C”。预期的令牌可能包括:“”...SQLCODE=-104,SQLSTATE=42601,DRIVER=4.16.53 SQL代码:-104,SQL状态:42601 下面是我的cre