【问题标题】:Laravel Migration Error: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytesLaravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节
【发布时间】:2017-07-03 19:52:47
【问题描述】:

php artisan make:authphp artisan make:authLaravel 5.4 上的迁移错误

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

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

【问题讨论】:

标签: mysql laravel pdo laravel-5 laravel-5.4


【解决方案1】:

对于流明:

添加到.env 文件

DB_ENGINE=InnoDB

【讨论】:

    【解决方案2】:

    只需在 /etc/mysql/mariadb.conf.d/50-server.cnf 或您的配置中的几行:

    innodb-file-format=barracuda
    innodb-file-per-table=ON
    innodb-large-prefix=ON
    innodb_default_row_format = 'DYNAMIC'
    

    sudo service mysql restart

    https://stackoverflow.com/a/57465235/778234

    查看文档:https://dev.mysql.com/doc/refman/5.6/en/innodb-row-format.html

    【讨论】:

      【解决方案3】:

      需要使用以下命令创建数据库。

      CREATE DATABASE database_name CHARACTER SET utf8 COLLATE utf8_general_ci;
      

      然后运行以下命令迁移数据库表。

      php artisan migrate
      

      【讨论】:

        【解决方案4】:

        如果您在运行“php artisan migrate”时遇到此错误。您可以通过编写以下代码来更改要更新的表:

            DB::statement('ALTER TABLE table_name ROW_FORMAT = DYNAMIC;');        
        

        在您的迁移脚本中。示例:

        class MyMigration extends Migration {
        
        /**
         * Run the migrations.
         */
        public function up()
        {
            DB::statement('ALTER TABLE table_name ROW_FORMAT = DYNAMIC;');        
            Schema::table('table_name', function ($table) {
                //....
            });
        }
        
        /**
         * Undo the migrations.
         */
        public function down()
        {
            //....
        }
        }
        

        然后再次运行php artisan migrate

        【讨论】:

          【解决方案5】:

          最干净的解决方案是转到您的数据库并进行更改:

          default_storage_engine to InnoDB
          

          你很可能有 MyISAM。

          【讨论】:

            猜你喜欢
            • 2017-09-09
            • 2019-10-11
            • 2018-09-15
            • 2017-04-01
            • 2018-09-28
            • 2021-02-28
            • 2021-02-08
            • 1970-01-01
            • 2015-06-22
            相关资源
            最近更新 更多