Как исправить ошибку создания поля в Laravel 5.3?

У меня есть миграция, которая правильно создала таблицу на локальном бродячем сервере, но когда я попытался выполнить миграцию на VPS с помощью nginx, он обнаружил странную ошибку.

Локальный env - это Vagrant / homestead (я не знаю ОС, извините), VPS env - это Debian 8, nginx. Laravel версии 5.3. При миграции необходимо создать 12 таблиц, но проблема возникла до завершения процесса, поэтому было создано только 10 таблиц. Кстати, это показывает, что env и другие настройки в порядке (я думаю), и только в 1 поле таблицы 1 есть ошибка

это код создания:

public function up()
    {
        Schema::create('vicards', function (Blueprint $table) {
            $table->increments('id');
            $table->string('visi_slug', 100);
            $table->unique('visi_slug', 'visi_slug_unique');
            $table->integer('user_id');
            $table->index('user_id', 'cards_user_id_index');
            $table->string('user_slug', 100);
            $table->index('user_slug', 'cards_user_slug_index');
            $table->string('avatar', 44)->default(0);
            $table->string('header', 80);
            $table->string('price', 12);
            $table->text('description');
            $table->text('pictures'); // 5 pics * 20 symbols + 4 commas
            $table->text('videos'); // 3 videos * 41 symbols + 2 commas
            $table->text('contacts'); //
            $table->text('links'); // links separated by commas
            $table->text('styles'); // object serialized
            $table->tinyInteger('actual', 1)->default(0);
            $table->timestamps();
        });
    }

проблема вызывает это поле

$table->tinyInteger('actual', 1)->default(0);

ремесленник интерпретирует это в:

 `actual` tinyint not null default '0' auto_increment primary key

и, конечно, это ошибка, потому что «первичный ключ auto_increment» уже существует - 1-е поле

Ожидаемый результат - регулярное создание таблицы.

У меня ошибка:

"[Illuminate \ Database \ QueryException] SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1067 Недопустимое значение по умолчанию для 'фактического' (SQL: создать таблицу vicards (id int unsigned not null auto_increment primary key, visi_slug varchar (100) not null» , user_id int not null, user_slug varchar (100) not null, avatar varchar (44) not null default '0', header varchar (80) not null, price varchar (12) not null, description text not null, pictures text not null, videos text not null, contacts text not null, links text not null, styles text not null, actual tinyint not null default '0' auto_inc rement primary key, created_at timestamp null, updated_at timestamp null) набор символов по умолчанию utf8 сопоставление utf8_unicode_ci) "

В чем причина этой ошибки? Помогите мне, пожалуйста.


person Vlad    schedule 28.05.2019    source источник


Ответы (1)


Не используйте значение длины, просто создайте tinyint со значением по умолчанию:

$table->tinyInteger('actual')->default(0);
person Martin    schedule 28.05.2019
comment
благодарю вас! Пользуюсь твоей инструкцией, и она меня спасает. Еще одно спасибо! - person Vlad; 29.05.2019
comment
p.s. @Martin Я поставил +1 к вашему ответу, но моей репутации недостаточно для визуального результата. - person Vlad; 29.05.2019