此问题已解决。查看我的帖子
我刚刚安装了一个新的Laravel 5.4项目。
当我跟随Jeffrey Way的Laravel从头开始教程时,我想要迁移我的数据库时出现以下错误:
[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 pr
imary key, `name` varchar(255) not null, `email` varchar(255) not null, `passwo
rd` varchar(255) not null, `remember_token` varchar(100) null, `created_at` tim
estamp null, `updated_at` timestamp null) default character set utf8mb4 collate
utf8mb4_unicode_ci)
-
[PDOException]
SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'users' already
exists
就像我说的,这是一个全新的安装,我不知道如何解决这个问题。你们有谁知道吗?
提前致谢!
@ian,
我按照你给我的指示,但现在我收到了这个错误:
[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l
ong; max key length is 767 bytes (SQL: alter table `users` add unique `users_em
ail_unique`(`email`))
-
[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too l
ong; max key length is 767 bytes
如何解决此问题:
这就是我这样做的原因,感谢Ian:
Schema::defaultStringLength(191);
添加到启动功能use Illuminate\Support\Facades\Schema;
。答案 0 :(得分:1)
关于密钥长度的第二个错误是Laravel 5.4的新变化。使用utf8mb4编码时,varchar字段最多只能为194。
您需要进入迁移,更改每次出现的string()的大小并添加长度。您可以选择将数据库编码更改回UTF8,但utf8mb4允许使用存储表情符号。
您可以参考https://laravel-news.com/laravel-5-4-key-too-long-error了解更多信息
答案 1 :(得分:0)
执行php artisan migrate
时,数据库不能像迁移中那样具有相同的表名(除非您只是在该表中添加另一个字段)
您必须删除所有表格(删除),然后再次运行php artisan migrate
。