我有迁移如下:访问冲突错误
create_users_table.php
class CreateUsersTable extends Migration {
public function up()
{
Schema::create('users', function(Blueprint $table) {
$table->increments('id');
$table->string('name', 255);
$table->string('username', 64)->unique();
$table->string('email', 255)->unique();
$table->string('password',64);
$table->timestamps();
});
}
public function down()
{
Schema::drop('users');
}
}
create_predictions_table.php
class CreatePredictionsTable extends Migration {
public function up()
{
Schema::create('predictions', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('fixture_id')->unsigned();
$table->foreign('fixture_id')->references('id')->on('fixtures');
$table->integer('home_team_score_prediction');
$table->integer('away_team_score_prediction');
$table->timestamps();
});
}
public function down()
{
Schema::drop('predictions');
}
}
create_fixtures_table.php
class CreateFixturesTable extends Migration {
public function up()
{
Schema::create('fixtures', function(Blueprint $table) {
$table->increments('id');
$table->integer('home_team_id');
$table->integer('away_team_id');
$table->dateTime('date');
$table->string('venue');
$table->timestamps();
});
}
public function down()
{
Schema::drop('fixtures');
}
}
起初,当我跑使用
php artisan migrate
我没有加入外键的迁移。我跑
php artisan migrate:refresh
加入这给了我以下errror外键约束后:
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'predictions' already exists (SQL: create table `predictions` (`id` int unsigned not null auto_increment primary key, `user_id` int unsigned not null, `fixture_id` int
unsigned not null, `home_team_score_prediction` int not null, `away_team_score_prediction` int not null, `created_ at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci)
我认为这是因为表已经在那里了(尽管刷新应该回滚迁移和运行它们再次)
当我试图使用回滚
php artisan migrate:rollback
我得到以下:
[Illuminate\Database\QueryException]
SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constrain t fails (SQL: drop table `users`)
我在哪里出错了?我是新来的移民,所以这些可能是初学者通常会遇到的错误。但我不明白我到底做错了什么。我希望有人能帮助我。
当你添加外键时,你改变了什么? – Melvin
我刚刚在预测表中添加了外键约束,这些表中的外键('user_id') - >引用('id') - > on('users');'和$ table-> foreign(' ('fix');' – md1hunox
好吧..你可以尝试迁移这个序列吗?用户,灯具,然后预测...看看它是否工作。 :) – Melvin