簡體   English   中英

Laravel SQLSTATE [HY000]:常規錯誤:1364字段“ id”沒有默認值

[英]Laravel SQLSTATE[HY000]: General error: 1364 Field 'id' doesn't have a default value

我現在在Laravel應用程序上工作了一段時間,但是當我現在運行php artisan migrate migration時,突然之間我總會收到錯誤消息:

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;結果SHOW COLUMNS FROM migrations;

在此處輸入圖片說明

觸發此查詢應適用於自動遞增,這是id值未自動遞增的原因

ALTER TABLE migrations MODIFY id INTEGER NOT NULL AUTO_INCREMENT;

注意:如果ID為0,則應將其更改為其他唯一ID值,然后通過查詢獲取ID的最大值,並將autoincrement設置為+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;

參考

經過大量研究和良好答案,我找到了這個解決方案,它為我解決了:

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

該解決方案基於 ,從一個類似question-感謝答案@Dracula捕食者的很好的提示。

您一直收到此錯誤,因為您可能已修改了遷移表。 您可以嘗試幾種選擇

  1. 運行php artisan migrate:fresh命令
  2. 刪除所有表並重新運行所有遷移

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM