Laravel 迁移错误 SQLSTATE[42000]
Laravel migration error SQLSTATE[42000]
我有几个 Laravel 迁移。
1-create_countries_table`
Schema::create('countries', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->timestamps();
});
2-create_cities_table
Schema::create('cities', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->smallInteger('country_id');
$table->timestamps();
$table->foreign('country_id')->references('id')->on('countries');
});
当我使用 php artisan migrate
时,我看到了这个错误
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
(SQL: alter table `cities` add constraint cities_country_id_foreign
foreign key (`country_id`) references `countries` (`id`))
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
有什么问题?
尝试 $table->integer('country_id')->unsigned();
而不是 $table->smallInteger('country_id');
在 laravel 中使用 $table->increments('id');
Laravel 创建一个 int(10) 字段。
要将字段连接到 id 作为外键,它必须是 int(10)。要创建外键 int 10,我们必须使用此代码:
$table->integer('country_id')->unsigned();
如果不使用 unsigned();
方法,字段将按 int(11) 类型创建,而不是 int(10)
这个问题的解决方案。
添加到 app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot(){
Schema::defaultStringLength(191);
}
我有几个 Laravel 迁移。
1-create_countries_table`
Schema::create('countries', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->timestamps();
});
2-create_cities_table
Schema::create('cities', function(Blueprint $table)
{
$table->increments('id');
$table->string('name');
$table->smallInteger('country_id');
$table->timestamps();
$table->foreign('country_id')->references('id')->on('countries');
});
当我使用 php artisan migrate
时,我看到了这个错误
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
(SQL: alter table `cities` add constraint cities_country_id_foreign
foreign key (`country_id`) references `countries` (`id`))
[PDOException]
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint
有什么问题?
尝试 $table->integer('country_id')->unsigned();
而不是 $table->smallInteger('country_id');
在 laravel 中使用 $table->increments('id');
Laravel 创建一个 int(10) 字段。
要将字段连接到 id 作为外键,它必须是 int(10)。要创建外键 int 10,我们必须使用此代码:
$table->integer('country_id')->unsigned();
如果不使用 unsigned();
方法,字段将按 int(11) 类型创建,而不是 int(10)
这个问题的解决方案。
添加到 app/Providers/AppServiceProvider.php
use Illuminate\Support\Facades\Schema;
public function boot(){
Schema::defaultStringLength(191);
}