Laravel 执行 php artisan migrate 报错 SQLSTATE[42S01]

Laravel 执行 php artisan migrate 命令时,报错:

1
2
3
Illuminate\Database\QueryException  : SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already exists (SQL: create table `users` (`id` int unsigned not null auto_increment primary key,
`name` varchar(255) not null, `email` varchar(255) not null, `password` varchar(255) not null, `remember_token` varchar(100) null, `created_at` timestamp null, `updated_at` timestamp null) default character set
utf8mb4 collate 'utf8mb4_unicode_ci')

这是因为Laravel 5.4以后的版本默认使用utf8mb4字符集,该字符集支持在数据库中存储“表情符号”。如果你运行MySQL v5.7.7或者更高版本,则不需要做任何事情。

解决方法一,使用 utf8 替代 utf8mb4

这可能不是理想的,但如果你不关心“utf8mb4”,你可以去你的 config/database.php 文件替换 charsetcollationutf8

1
2
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',

to

1
2
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

然后执行命令 composer dump-autoload, 再执行 php artisan migrate 就不会报错了。

坚持原创技术分享,您的支持将鼓励我继续创作!
0%