【问题标题】:How to generate the migrations (tables?) from cloned laravel project onto local db?如何从克隆的 laravel 项目生成迁移(表?)到本地数据库?
【发布时间】:2018-08-19 04:01:19
【问题描述】:

我希望我的问题是有道理的,因为我对我应该做什么有点困惑。

我已经克隆了一个 laravel 项目,文件夹中已经有大约 20 个迁移。据我了解,迁移就是表格?

我创建了一个空的 mysql 数据库,该数据库链接到这个 laravel 项目,该项目目前有一个 migrations 表和一个 users 表。

我想我应该做一些事情来生成写入新数据库迁移文件夹中的表,但我不确定如何。

到目前为止,我已经使用了该命令 php artisan migrate 生成 migrationsusers 表并出现这些错误。

[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误 或访问冲突:1071 指定的密钥太长;最大键 长度为 1000 字节(SQL:alter table users add unique
users_email_unique(email))


[Doctrine\DBAL\Driver\PDOException] SQLSTATE[42000]:语法错误 或访问冲突:1071 指定的密钥太长;最大键 长度为 1000 字节


[PDOException] SQLSTATE[42000]:语法错误或访问冲突: 1071 指定的密钥太长;最大密钥长度为 1000 字节

【问题讨论】:

标签: php mysql laravel migration


【解决方案1】:

Laravel 5.4 对默认数据库字符集进行了更改,现在是 utf8mb4,其中包括对存储表情符号的支持。这只会影响新的应用程序,只要您运行 MySQL v5.7.7 及更高版本,您就不需要做任何事情。

对于那些运行 MariaDB 或旧版本 MySQL 的用户,您在尝试运行迁移时可能会遇到此错误:

[照亮\数据库\查询异常] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节(SQL:alter table users add unique users_email_unique(email))

[PDO异常] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

正如迁移指南中所述,要解决此问题,您只需编辑 AppServiceProvider.php 文件并在启动方法中设置默认字符串长度:

use Illuminate\Support\Facades\Schema;

public function boot()
{
    Schema::defaultStringLength(191);
}

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 2010-12-05
    • 2017-04-28
    • 2019-04-23
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    相关资源
    最近更新 更多