我一直在尝试将迁移用于跨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');
});
答案 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');
});
这解决了我的问题,但问题仍然是传统代码不起作用的原因。