Laravel Migrate创建重复的外键名称

时间:2016-12-20 23:44:49

标签: php laravel laravel-5

Schema::create('a', function(Blueprint $table) { 
  $table->bigInteger('id');
  $table->primary('id');
});

Schema::create('b', function(Blueprint $table) { 
  $table->bigInteger('id');
  $table->bigInteger('a_id');
  $table->foreign('a_id')->references('id')->on('a');
});

Schema::create('c', function(Blueprint $table) { 
  $table->bigInteger('id');
  $table->bigInteger('a_id');
  $table->foreign('a_id')->references('id')->on('a'); 
});

php artisan migrate上运行此操作会给我一个

ORA-02264: name already used by an existing constraint.

似乎迁移在b上创建了一个名为 A_ID_PK 的约束,然后它尝试在c上创建一个名为 A_ID_PK 的约束和错误,因为有2个 A_ID_PK 对A.id的约束我是否正确,如果有,是否有解决方案?

1 个答案:

答案 0 :(得分:0)

从错误实用程序中, ORA-02264 错误表示ORA-02264: Name already used by an existing constraint

定义是指定的约束名称必须是唯一的。因此,解决方案是为约束指定唯一的约束名称。

问题和解决方法
不确定,但问题是虽然可能尚未创建表,但constraint_name视图中可能存在dba_constraints。你可以这样检查:

select
   table_name
from
   dba_constraints
where constraint_name = upper ('A_ID_PK');

如果您还没有将此constraint_name用于其他表格。

您的解决方案如下:
使用另一个约束名称,该名称对表是唯一的。 确保a table。

存在此约束名称