由于错误150(外键约束)而导致丢弃后无法重新创建mysql表!

时间:2014-04-24 20:52:32

标签: mysql sql database foreign-keys

这不是重复,因为我看到所有其他帖子,但没有找到这个特定案例的答案。我的步骤:

  1. 创建了两个表,并将表2中的外键添加到表1

  2. 删除tbale 1,然后删除表2

  3. 更改了表1中主键字段的名称(及其类型)并重新创建了

  4. 在添加外键时,我收到了错误

  5. 然而,我然后运行了SHOW CREATE TABLE Table2(和Table1),并且没有一个显示我要删除的外键名称!

  6. 没有该名称,我无法删除外键(我添加了它而没有指定名称或者现在没有显示任何名称)。我该怎么办?

2 个答案:

答案 0 :(得分:0)

您必须知道外键的名称。如果它是在没有名称的情况下创建的,那么将自动生成名称。

尝试这些查询以获取FK名称:

SELECT
  constraint_name
FROM
information_schema.REFERENTIAL_CONSTRAINTS
WHERE
constraint_schema = <'db_name'> AND table_name = <'table_name'>;


SELECT *
FROM
information_schema.KEY_COLUMN_USAGE
WHERE
constraint_schema = <'db_name'> AND table_name = <'table_name'> AND   
referenced_table_name IS NOT NULL;

答案 1 :(得分:0)

在第二步中,您是否更改了外键字段的列类型?必须与主键相同。

另外,您必须更新用于添加新列名的外键约束的SQL语句。