Big*_*ies 48 laravel laravel-4
我试图回滚我的迁移.
我的迁移文件使用外键,如此
$table->foreign('user_one')->references('id')->on('users');
$table->foreign('user_two')->references('id')->on('users');
Run Code Online (Sandbox Code Playgroud)
我的down()函数是这样的
public function down()
{
Schema::drop('pm_convo');
Schema::drop('pm_convo_replys');
}
Run Code Online (Sandbox Code Playgroud)
当我运行我的迁移命令
php artisan migrate:refresh --seed --env=local
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails (SQL: drop table `pm_convo`)
Run Code Online (Sandbox Code Playgroud)
我不确定该如何解决这个问题.
编辑:
我试过了: $table->dropForeign('pm_convo_user_one_foreign');
但我也得到了错误
小智 73
我认为这是一个更好的方法:
public function down()
{
DB::statement('SET FOREIGN_KEY_CHECKS = 0');
Schema::dropIfExists('tableName');
DB::statement('SET FOREIGN_KEY_CHECKS = 1');
}
Run Code Online (Sandbox Code Playgroud)
Nil*_*ner 62
pm_convo_replys
有一个引用的外键pm_convo
,因此你不能在不pm_convo
违反外键约束的情况下先删除pm_convo_replys
.
要同时删除您需要删除pm_convo_replys
第一.
public function down()
{
Schema::drop('pm_convo_replys');
Schema::drop('pm_convo');
}
Run Code Online (Sandbox Code Playgroud)
Din*_*nga 27
我也遇到过这类问题.迁移文件顺序是此处的主要问题.最好的方法是逐个创建迁移文件.应首先创建主要实体.每次创建迁移文件时都应刷新迁移.(带php artisan migrate:refresh
)
据@abkrim和@Eric说
public function down()
{
Schema::disableForeignKeyConstraints();
Schema::drop('tableName');
Schema::enableForeignKeyConstraints();
}
Run Code Online (Sandbox Code Playgroud)
我认为这是最正确的方法:
public function down()
{
Schema::table('[table]', function (Blueprint $table) {
$table->dropForeign('[table]_[column]_foreign');
$table->dropColumn('[column]');
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48108 次 |
最近记录: |