我正在将Sqlite用于测试数据库。当我经营一家工厂时,它会显示
SQLSTATE[HY000]: General error: 1 near "auto_increment": syntax error
根据SQLite文档,它们具有autoincrement
而不是auto_increment
。
如何为sqlite定义主键或自动增量?
我正在使用RefreshDatabase特征。
迁移:
Schema::create('teachers', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 100);
工厂:
$factory->define(Teacher::class, function (Faker $faker) {
return [
'name' => $faker->name
];
});
phpunit.xml
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
config / database.php
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'url' => env('DATABASE_URL'),
'database' => database_path('database.sqlite'),
'prefix' => '',
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
],
....
测试用例
public function user_can_visit_teachers_page()
{
$teacher = factory('App\Models\Teacher')->create();
$response = $this->get(route('teachers.index', $teacher->id));
$response->assertStatus(200);
}
完整的错误消息是:
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1 near "auto_increment": syntax error (SQL: create table `teachers` (`id` int unsigned not null auto_increment primary key, `name` varchar(100) not null))
pdo_sqlite
文件中启用了php.ini
。答案 0 :(得分:0)
通过遵循此示例对其进行更改。链接:https://laravel.com/docs/5.8/upgrade
Schema::create('teachers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name', 100);