【问题标题】: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
【解决方案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。