当前位置: 首页 > 面试题库 >

错误1005(HY000):无法创建表(错误号:150)

宗政楚
2023-03-14
问题内容

尝试在mysql中创建表时出现错误。

有解决的技巧吗?

create table stock_in(
    ind int not null auto_increment,
    itemcode varchar(10) not null,
    quantity int not null,
    description text not null,
    sales_ref int not null default -1,
    return_outwards_ref int not null default -1,
    stock_in_receipt_ref int not null default -1,
    date text not null,
    time text not null,
    username text not null,
    foreign key (sales_ref) references sales (receiptno),
    foreign key (return_outwards_ref) references returnoutwards(ind),
    primary key (ind)
);

错误:

ERROR 1005 (HY000): Can't create table 'posinventory.stock_in' (errno: 150)

问题答案:

查看有关外键约束的MySQL手册:

如果重新创建已删除的表,则该表必须具有符合引用该表的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引用的键上具有索引。如果不满足这些条件,MySQL将返回错误号1005,并在错误消息中引用错误150。

一些想法:

  • 最好删除表,并使用格式正确的语法对其进行新建。
  • 确保添加ENGINE=InnoDB;CREATE TABLE-命令。
  • 确保在您的MySQL服务器上启用了InnoDB。要验证这一点,请尝试以下命令:SHOW VARIABLES LIKE 'have_innodb';-如果返回YES,则启用InnoDB。
  • 检查命令中表名和字段名的大小写。
  • 不仅要检查要创建的表,还要检查外键引用的表。
  • 确保引用的表已正确索引。


 类似资料:
  • 问题内容: 我在Internet上搜索了此问题的解决方案,并检查了Stack Overflow问题,但是没有一种解决方案适合我的情况。 我想创建一个从表sira_no到metal_kod的外键。 该脚本返回: 我尝试将索引添加到被引用的表中: 我在两个表(字符集和排序规则)上都检查了METAL_KODU,但找不到该问题的解决方案。我该如何解决这个问题? 这是metal_kod表: 问题答案: 错误

  • 问题内容: 这是我的桌子: 现在,当我尝试导入时出现错误:#1005-无法创建表’kobeco_yii.tbl_comments’(错误号:150)(详细信息:Percona- XtraDB,支持事务,行级锁定和外键) 问题答案: 您正在尝试在其他表之前创建。需要表和用于外键约束。 尝试将for移至其他下方。

  • 问题内容: 我将我的MySQL数据库插入WAMP服务器时遇到了麻烦。我打算发布模式的图像,但这是我不能的第一篇文章。 下面是执行的脚本。 但是然后我得到这个错误: 我不知道为什么。谁能帮我? 问题答案: 我迅速搜寻了你,它把我带到了这里。我引用: 如果您尝试添加名称已经在其他地方使用的约束,则会收到此消息 要检查约束,请使用以下SQL查询: 在此处查找更多信息,或尝试查看错误发生的位置。看起来像是

  • 问题内容: 我当时正在数据库中创建一些表,但是每次我以errno 150结束有关外键的工作时。首先,这是我创建表的代码: 这些是我得到的错误: 我跑了,给出了更详细的错误描述: 我在StackOverflow和其他在线位置上进行了搜索- 在这里找到了一篇有用的博客文章,其中提供了有关如何解决此错误的指针 -但我无法弄清楚出了什么问题。任何帮助,将不胜感激! 问题答案: 您应该将car_id设置为汽

  • 问题内容: 我正在运行以下由 MySQL Workbench 自动生成的MySQL脚本(已精简),出现以下错误: 1005无法创建表“ regula.reservation”(错误号:121) 我对数据库不是很精通,并且此错误也不是非常有用。 这里有什么问题? 问题答案: 错误121表示存在外键约束错误。由于您使用的是InnoDB,因此您可以在运行失败的查询后使用,以在本节中获得解释。我自己运行了