Как исправить ошибку создания поля в Laravel 5.3? - PullRequest
0 голосов
/ 28 мая 2019

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

Локальный env - это Vagrant / hometead (я не знаю ОС, извините), 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-е поле

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

Я получил ошибку:

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

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

1 Ответ

0 голосов
/ 28 мая 2019

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

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