2015-05-19 3 views
6

Я пытаюсь создать таблицу, имеющую в качестве значения целого числа по умолчанию Код выглядит так:Laravel 5 Миграция, недопустимое значение по умолчанию, когда число

Schema::create('gsd_proyecto', function($table) { 
     $table->increments('id'); 
     $table->string('nombre', 80)->unique(); 
     $table->string('descripcion', 250)->nullable(); 
     $table->date('fechaInicio')->nullable(); 
     $table->date('fechaFin')->nullable(); 
     $table->integer('estado', 1)->default(0); 
     $table->string('ultimoModifico', 35)->nullable(); 
     $table->timestamps(); 
    }); 

Но когда я запускаю миграцию я м получает следующую ошибку:

Next exception 'Illuminate\Database\QueryException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1067 Invalid default value for 'estado' 

Я проверял, что это SQL, созданный Laravel и я нашел следующий

create table `gsd_proyecto` (
`id` int unsigned not null auto_increment primary key, 
`nombre` varchar(80) not null, 
`descripcion` varchar(250) null, 
`fechaInicio` date null, 
`fechaFin` date null, 
`estado` int not null default '0' auto_increment primary key, 
`ultimoModifico` varchar(35) null, 
`created_at` timestamp default 0 not null, 
`updated_at` timestamp default 0 not null 
) 

Как вы можете видеть, Laravel пытается установить поле Estado со значением Char («0»), а также в качестве автоинкрементного первичного ключа

Любая помощь будет действительно оценено

ответ

12

Удалите второй параметр в методе integer. Он устанавливает столбец как автоинкремент. Проверьте API-интерфейс Laravel для получения дополнительных сведений.

http://laravel.com/api/5.0/Illuminate/Database/Schema/Blueprint.html#method_integer

$table->integer('estado')->default(0); 
+2

Это сработало! Большое спасибо! Я думал о таком определении, как MySql. Вместо этого я сейчас использую tinyInteger, и теперь он работает. Большое спасибо! – WindSaber

Смежные вопросы