Php Laravel迁移创建重复的外键名称
使用Php Laravel迁移创建重复的外键名称,php,laravel,laravel-5,Php,Laravel,Laravel 5,使用php artisan migrate在这台机器上运行这个程序,会给我一个 Schema::create('a', function(Blueprint $table) { $table->bigInteger('id'); $table->primary('id'); }); Schema::create('b', function(Blueprint $table) { $table->bigInteger('id'); $table->bi
php artisan migrate
在这台机器上运行这个程序,会给我一个
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');
});
似乎migrate在b上创建了一个名为a\u ID\u PK的约束,然后它尝试在c上创建一个名为a\u ID\u PK的约束,因为a.ID上有2个a\u ID\u PK约束。我是否正确,如果正确,是否有解决方案?从错误实用程序中,ORA-02264错误表示现有约束已使用的名称ORA-02264:Name
定义是指定的约束名称必须是唯一的。因此,解决方案是为约束指定唯一的约束名称
问题和解决方法
不确定,但问题是,虽然表可能尚未创建,但dba\u constraints
视图中可能存在constraint\u name
。您可以这样检查:
ORA-02264: name already used by an existing constraint.
如果您尚未对其他表使用此约束\u名称
您的解决方案如下所示:
使用另一个约束名称,该名称对于表是唯一的。
确保a
表存在此约束名称。从错误实用程序中,ORA-02264错误表示ORA-02264:已由现有约束使用的名称
定义是指定的约束名称必须是唯一的。因此,解决方案是为约束指定唯一的约束名称
问题和解决方法
不确定,但问题是,虽然表可能尚未创建,但dba\u constraints
视图中可能存在constraint\u name
。您可以这样检查:
ORA-02264: name already used by an existing constraint.
如果您尚未对其他表使用此约束\u名称
您的解决方案如下所示:
使用另一个约束名称,该名称对于表是唯一的。
确保a
表中存在此约束名称。您的上述代码创建了两个不同的约束:b\u a\u id\u foreign
表b上的约束和c\u a\u id\u foreign
表c上的约束。在运行migrate之前,您可以始终检查执行的sql代码:php artisan migrate——假装运行此命令时没有任何错误……您上面的代码创建了两个不同的约束:b_a_id_foreign
在表b上,以及c_a_id_foreign
在laravel 5.3的表c上。在运行migrate之前,您可以始终检查执行的sql代码:php artisan migrate——假装运行此命令时没有收到任何错误。。。。