Laravel 5 Migration, недопустимое значение по умолчанию, когда целое число

Я пытался создать таблицу с 0 в качестве целочисленного значения по умолчанию
Код выглядит так:

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’) а также в качестве первичного ключа автоинкремента

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

6

Решение

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

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

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

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector