安装Laravel Voyager软件包时迁移错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装Laravel Voyager软件包时迁移错误相关的知识,希望对你有一定的参考价值。

我有全新安装的Laravel 5.5,但是当我尝试安装Voyager管理面板时出现此错误:

  [IlluminateDatabaseQueryException]
  SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table `translations` add unique `translati
ons_table_name_column_name_foreign_key_locale_unique`(`table_name`,    `column_name`, `foreign_key`, `locale`))

配置

php版本:7.0.10 mysql版本:5.7.14

代码更新

我想我找到了相关的代码:

        Schema::create('translations', function (Blueprint $table) {
        $table->increments('id');

        $table->string('table_name');
        $table->string('column_name');
        $table->integer('foreign_key')->unsigned();
        $table->string('locale');

        $table->text('value');

        $table->unique(['table_name', 'column_name', 'foreign_key', 'locale']); // SOURCE OF THE ERROR ?
    });
答案

您需要更新“mysql”的“config / database.php”。

'engine'=> null

'engine'=>'InnoDB ROW_FORMAT = DYNAMIC',

还更新“app / Providers / AppServiceProvider.php”

namespace AppProviders;

use IlluminateSupportServiceProvider;
use IlluminateSupportFacadesSchema;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        // Specified key was too long error, Laravel News post:
        Schema::defaultStringLength(191);
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

并在项目文件夹中运行这些命令。

php artisan cache:清楚

php artisan配置:清除

php artisan voyager:install --with-dummy

另一答案

索引的总长度太长。

添加唯一索引的列不应该像VARCHAR列那样长,因为索引将非常庞大且效率低下。

另一答案

这是一个已知的issue

如果您不使用Voyager的多语言功能,只需取消注释*******************_create_translations_table中的行

//  $table->unique(['table_name', 'column_name', 'foreign_key', 'locale']);

或尝试将MySql数据库更新为7.x.

以上是关于安装Laravel Voyager软件包时迁移错误的主要内容,如果未能解决你的问题,请参考以下文章

安装laravel包时的错误列表

一款你不容错过的Laravel后台管理扩展包 —— Voyager

Composer 要求内存不足。 PHP 致命错误:允许的内存大小为 1610612736 字节已用完 Voyager

如何在 laravel voyager 中上传大文件?

为Laravel Voyager创建数据导入页面

基于用户角色的 Laravel voyager 策略