Laravel SQLSTATE [HY000]: общая ошибка: 1364 Поле 'id' не имеет значения по умолчанию - PullRequest
0 голосов
/ 26 июня 2019

Я некоторое время работаю над приложением Laravel, но когда я запускаю php artisan migrate сейчас, внезапно я всегда получаю ошибку:

SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value (SQL: insert into `migrations` (`migration`, `batch`) values (2019_06_05_080701_create_departments_table, 22))

и я понятия не имею, почему это происходит, так как этого никогда не было раньше. Когда я пытаюсь перенести определенную миграцию, я получаю ту же ошибку, так что здесь происходит?

Миграция выглядит так:

public function up()
{
    Schema::create('departments', function (Blueprint $table) {
        $table->increments('id');
        $table->unsignedInteger('company_id');
        $table->string('name');
        $table->string('p_number')->nullable();
        $table->string('address')->nullable();
        $table->string('zipcode')->nullable();
        $table->string('city')->nullable();
        $table->string('contact_name')->nullable();
        $table->string('contact_email')->nullable();
        $table->string('contact_phone')->nullable();

        $table->timestamps();
    });
}

Результат SHOW COLUMNS FROM migrations;

enter image description here

Ответы [ 3 ]

1 голос
/ 26 июня 2019

Запустить этот запрос следует для автоинкремента, поэтому значение id не получает автоинкремент

ALTER TABLE migrations MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

Примечание: Если есть идентификаторы с 0, то вы должны изменить его на другой уникальное значение идентификатора, а затем получить максимальное значение идентификатора по запросу и установить автоинкремент до + 1

SET @new_index = (SELECT MAX(id) FROM migrations );
SET @sql = CONCAT('ALTER TABLE migrations AUTO_INCREMENT = ', @new_index);
PREPARE st FROM @sql;
EXECUTE st;

Reference .

0 голосов
/ 27 июня 2019

Вы получаете эту ошибку, потому что, вероятно, вы изменили таблицу миграции. Вы можете попробовать несколько вариантов

  1. Запуск php artisan migrate: свежая команда
  2. Удалите все таблицы и перезапустите все миграции
0 голосов
/ 26 июня 2019

После долгих исследований и хороших ответов я нашел это решение, которое решило его для меня:

ALTER TABLE migrations CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT = 123456;

Решение основано на этом ответе на похожий вопрос - благодаря @ Dracula Predator за хороший совет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...