由于约束不存在,无法在MariaDB中创建表

时间:2018-08-16 21:06:31

标签: mysql foreign-keys mariadb innodb

我正在尝试创建下表:

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清理,或者使用其他数据库,以便可以使用该表名。

0 个答案:

没有答案