我正在尝试创建下表:
invoice_government_levy_tracking
具有以下各列:
invoice_id - unsignedInteger (10)
government_levy_tracking_id - unsignedInteger (10)
但是,每当我尝试这样做时,都会出现以下错误:
#1005-无法创建表“ database_invoice_government_levy_tracking”(错误号:150)
当我单击详细信息时,显示为最新外键错误,如下所示:
180817 8:58:53表数据库/ invoice_government_levy_tracking的外键约束错误: 该表中没有索引,该索引将包含列作为 前几列,或者表中的数据类型与 被引用的表或ON ... SET NULL列之一被声明 非空。约束:,约束 “ invoice_government_levy_tracking_invoice_id_foreign”外键 (“ invoice_id”)参考“ invoices”(“ id”)
如果我尝试使用以下方法搜索该约束条件:
select * from information_schema.table_constraints where constraint_schema = 'database'
我可以看到所有约束,并且筛选表没有结果 invoice_government_levy_tracking_invoice_id_foreign 或如果我仅使用 levy 或发票进行过滤,则仅是我期望的值,它们与尝试制作的表无关
该表以前已经存在,但是已被删除,并且没有显示在表列表中。
对此有什么想法吗?它让我完全陷入了困境。
-编辑-
尝试使用以下SQL语句创建表,并导致相同的错误:
CREATE TABLE `invoice_government_levy_tracking` (
`invoice_id` INT( 10 ) UNSIGNED NOT NULL,
`government_levy_tracking_id` INT( 10 ) UNSIGNED NOT NULL
) ENGINE InnoDB
另外,如果我导出数据库,则没有对尝试创建的表的引用,也没有约束条件
---附加编辑---
所以看起来四处张望,以某种方式破坏了数据库,并且innodb仍然在其记录中包含表和约束。
解决方案是,不要使用该表名,也不要运行innodb清理,或者使用其他数据库,以便可以使用该表名。