mysql – Laravel 5.1迁移和种子无法截断外键约束中引用的表

这篇文章主要介绍mysql – Laravel 5.1迁移和种子无法截断外键约束中引用的表, 对于目前你搜索查找的问题还是具有很好的参考价值,希望编程之家小编整理的这个内容对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

编程之家(jb51.cc)小编说:我正在尝试运行迁移(见下文)并为数据库播种,但是当我运行时phpartisanmigrate--seed我收到此错误:Migrationtablecreatedsuccessfully.Migrated:2015_06_17_100000_create_users_tableMigrated:2015_06_17_200000_create_password_resets_tableMigrated:2015_06_1

我正在尝试运行迁移(见下文)并为数据库播种,但是当我运行时

PHP artisan migrate --seed

我收到此错误

Migration table created successfully.
Migrated: 2015_06_17_100000_create_users_table
Migrated: 2015_06_17_200000_create_password_resets_table
Migrated: 2015_06_17_300000_create_vehicles_table

[Illuminate\Database\QueryException]
sqlSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table
referenced in a foreign key constraint (`app`.`vehicles`, CONSTRAINT `vehic
les_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `app`.`users` (`id`
)) (sql: truncate `users`)

[PDOException]
sqlSTATE[42000]: Syntax error or access violation: 1701 Cannot truncate a table
referenced in a foreign key constraint (`app`.`vehicles`, CONSTRAINT `vehic
les_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `app`.`users` (`id`
))

我查看了这个错误应该是什么意思,并且还发现有examples个其他人遇到同样的问题,甚至只是与使用MySQL及其解决方案有关,但是应用:

DB::statement('SET FOREIGN_KEY_CHECKS=0;'); and 
DB::statement('SET FOREIGN_KEY_CHECKS=1;'); 

在down()中似乎不起作用,当我在MysqL中运行describe时,表格看起来是正确的.

正确命名迁移以确保首先迁移users表,然后确定可以应用外键的车辆,并且正确设置的表表明迁移已运行,但随后发生错误.我删除并重新创建了数据库并再次尝试,结果相同.我也不明白为什么它试图截断数据库的第一个迁移和种子,我不会想到当你试图运行PHP artisan migrate:refresh –seed时会发生这种情况.

// 2015_06_17_100000_create_users_table.PHP

class createusersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('username', 60)->unique();
            $table->string('email', 200)->unique();
            $table->string('password', 255);
            $table->string('role')->default('user');
            $table->rememberToken();
            $table->timestamps();
        });
    }
}

public function down()
{
    Schema::drop('users');
}

// 2015_06_17_300000_create_vehicles_table.PHP

class CreateVehiclesTable extends Migration
{
    public function up()
    {
        Schema::create('vehicles', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->string('make');
            $table->string('model');
            $table->string('year');
            $table->string('color');
            $table->string('plate');
            $table->timestamps();

            $table->foreign('user_id')->references('id')->on('users');
        });
    }
}

public function down()
{
    Schema::drop('vehicles');
}

解决方法:

错误所示,您不能截断外键引用的表.删除应该工作…

DB::table('some_table')->delete();

相关文章

我有一个网站,包括2个不同的登录表单,2个位置,一个在导航栏上...
这是我用于上传多个文件的控制器代码,我从GoogleChrome上的’...
1. 只需要在 config\app.php 文件中加入 faker_loca...
我正在尝试运行迁移(见下文)并为数据库播种,但是当我运行时p...
我正在尝试获取所有模型的关联数组.我有以下型号:classArti...
我有一个包含以下表和关系的数据库:租房广告1-1Carm-1型号m...