运行迁移文件报错,字段长度过长
先说明一下,在公司的电脑没办法安装教程推荐的homestead环境.感觉可能要重装系统.或者是因为公司的网络环境,设置了内网IP所以虚拟机一直卡在Homestead启动时SSH auth method: private key;所以用了phpstudy来凑合用.
运行数据库迁移文件.返回以下错误.
C:\Users\Administrator\MyCode\blog>php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))
经过查找资料,是数据版本问题导致,和字符集的问题.更换了数据库版本从5.7.26更换到8.0.12,字符集也使用了laravel推荐使用的:utf8mb4,排序规则:utf8mb4_general_ci;
删除了已生成的表,再次运行迁移文件,还是一样的错误.
当然也找到了对应的解决方法:
在app/Providers/AppServiceProvider.php中修改
但是这个设置似乎是不完美的方法,而且也是不太符合现在应用.
为了排除是代码或者框架版本问题,我单独在数据库运行了对应的sql语句.
当表结构的email字段长度为255时得到的返回结果也是同样的报错.
然后我再将email字段的长度修改成191之后,运行这句sql成功.
希望能帮我排排错,是哪里出了问题.感激不尽!
补充完问题后五分钟,突然想到会不会是表的引擎问题;查看迁移产生的表和我自己创建的表都默认使用的引擎是MyISAM
,更改成InnoDB
后运行SQL成功!!!!教程中在没有提及这个问题.是因为集成环境的原因还是laravel框架本身配置的原因?运行迁移文件能修改成默认生成InnoDB
的引擎吗?
推荐文章: