1. 程式人生 > 其它 >laravel 8執行資料庫遷移檔案出錯的原因和解決方案

laravel 8執行資料庫遷移檔案出錯的原因和解決方案

背景:

laravel 8 ,要遷移的mysql表資料結構如下:

cars表:

+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
| founded | int | NO | | NULL | |
| description | longtext | NO | | NULL | |
| created_at | timestamp | YES | | NULL | |
| updated_at | timestamp | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+

car_models表:

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int unsigned | NO   | PRI | NULL    | auto_increment |
| car_id     | int unsigned | NO   | MUL | NULL    |                |
| model_name | varchar(255) | NO   |     | NULL    |                |
| created_at | timestamp    | YES  |     | NULL    |                |
| updated_at | timestamp    | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

 

執行 php artisan migrate ,報錯:SQLSTATE[HY000]: General error: 3780 Referencing column 'car_id' and referenced column 'id' in foreign key constraint 'car_models_car_id_foreign' are incompatible.

 

分析:根據提示,可以看出是說car_id和id不相容,導致這個問題的原因是laravel 8 生成的migration裡,預設使用的是$table->id(),需要改成$table->increment('id')