PHP Artisan 迁移失败
PHP Artisan migrate fails
这个问题已经解决了。在下方查看我的post
我刚刚安装了一个新的 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
如何解决这个问题:
我就是这样做的,感谢伊恩:
- 删除数据库并创建一个新的
- 使用新的数据库凭据更新 env 文件
- 前往App->Providers->AppServiceProvider.php
- 开机功能添加
Schema::defaultStringLength(191);
- 确保在文件顶部添加
use Illuminate\Support\Facades\Schema;
。
- 迁移数据库,问题解决!
在执行 php artisan migrate
时,数据库不能具有与迁移中相同的 table 名称(除非您只是在 table 中添加另一个字段)
您必须删除所有 table(丢弃),然后再次 运行 php artisan migrate
。
您在密钥长度方面遇到的第二个错误是 Laravel 5.4 中的新更改。使用utf8mb4编码时,varchar字段最多只能有194个。
您将需要开始迁移,更改每次出现的 string() 的大小并添加一个长度。您可以选择将数据库编码改回 UTF8,但是 utf8mb4 允许使用存储表情符号。
更多信息可以参考https://laravel-news.com/laravel-5-4-key-too-long-error
这个问题已经解决了。在下方查看我的post
我刚刚安装了一个新的 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
如何解决这个问题:
我就是这样做的,感谢伊恩:
- 删除数据库并创建一个新的
- 使用新的数据库凭据更新 env 文件
- 前往App->Providers->AppServiceProvider.php
- 开机功能添加
Schema::defaultStringLength(191);
- 确保在文件顶部添加
use Illuminate\Support\Facades\Schema;
。 - 迁移数据库,问题解决!
在执行 php artisan migrate
时,数据库不能具有与迁移中相同的 table 名称(除非您只是在 table 中添加另一个字段)
您必须删除所有 table(丢弃),然后再次 运行 php artisan migrate
。
您在密钥长度方面遇到的第二个错误是 Laravel 5.4 中的新更改。使用utf8mb4编码时,varchar字段最多只能有194个。
您将需要开始迁移,更改每次出现的 string() 的大小并添加一个长度。您可以选择将数据库编码改回 UTF8,但是 utf8mb4 允许使用存储表情符号。
更多信息可以参考https://laravel-news.com/laravel-5-4-key-too-long-error