首页 文章

如何从克隆的laravel项目生成迁移(表?)到本地数据库?

提问于
浏览
0

我希望我的问题有道理,因为我对我应该做的事情感到有些困惑 .

我克隆了一个laravel项目,该文件夹中已有大约20个迁移 . 根据我的理解,迁移是表格?

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

我想我应该做一些事情来生成在新数据库的迁移文件夹中编写的表,但我不知道如何 .

到目前为止,我使用了命令 php artisan migrate ,它生成了一个 migrationsusers 表,并提出了这些错误 .

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


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


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

1 回答

  • 3

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

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

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

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

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

    use Illuminate\Support\Facades\Schema;
    
    public function boot()
    {
        Schema::defaultStringLength(191);
    }
    

相关问题