Laravel-OCI8 ORA-02275:表中已经存在这样的引用约束

时间:2014-08-31 11:24:25

标签: php oracle laravel eloquent

我一直在尝试将迁移用于跨dbms数据库。使用委托和confide包,我在它们之后添加了迁移,将users_statuses表和users表中的引用添加到用户状态'id;但是当我定义外键时,我得到了这个:

[Illuminate\Database\QueryException]
Error Code    : 2275
Error Message : ORA-02275: such a referential constraint already exists in the table
Position      : 53
Statement     : alter table users add constraint users_state_foreign foreign key ( state ) references user_statuses ( id ) (SQL: alter table users add constraint users_state_foreign foreign key ( state ) references user_statuses ( id ))

[yajra\Pdo\Oci8\Exceptions\SqlException]
Error Code    : 2275
Error Message : ORA-02275: such a referential constraint already exists in the table
Position      : 53
Statement     : alter table users add constraint users_state_foreign foreign key ( state ) peferences user_statuses ( id )

以下是user_statuses和更改迁移。 user_status创建:

Schema::create('user_statuses', function($table){
    // Columns
    $table->increments('id')->unsigned();
    $table->string('name');

    // Indexes

    // Constraints
});

用户更改:

Schema::table('users',function($table){
    // Columns
    $table->integer('state')->unsigned();
    $table->softDeletes();

    // Indexed

    // Constraints
    $table->foreign('state')->references('id')->on('user_statuses');
});

2 个答案:

答案 0 :(得分:1)

这已在版本https://github.com/yajra/laravel-oci8/tree/v1.5.11修复

请尝试或向我们的回购提交问题。

答案 1 :(得分:0)

我将foreign()语句放在同一个文件中的另一个新Schema::table()语句中,只是如下所示创建列的那个:

Schema::table('users', function($table){
    // Columns
    $table->integer('kojak')->unsigned();
    $table->softDeletes();

    // Indexed

    // Constraints

});
Schema::table('users', function($table){
    $table->foreign('kojak')->references('id')->on('user_statuses');
});

这解决了我的问题,但问题仍然是传统代码不起作用的原因。