laravel 8执行数据库迁移文件出错的原因和解决方案
背景:
laravel 8 ,要迁移的mysql表数据结构如下:
cars表:
1 2 3 4 5 6 7 8 9 10 | +-------------+--------------+------+-----+---------+----------------+ | 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表:
1 2 3 4 5 6 7 8 9 | +------------+--------------+------+-----+---------+----------------+ | 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')
分类:
php
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人