0

[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 1000 字节(SQL:alter table translationsadd unique translations_table_name_column_name_foreign_key_locale_unique( table_ name, column_name, foreign_key, locale))

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

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

AppServiceProvider.php这种方法不起作用我无法修复这个错误,有什么方法可以修复它?

use Illuminate\Support\Facades\Schema;

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

2 回答 2

1

改变

use Illuminate\Support\Facades\Schema;

use Schema;
于 2017-05-16T08:37:20.150 回答
1

当我尝试安装 voyager 时,这发生在我身上。经过几次挖掘,我发现这两个答案有效。

解决方案01

* /config/database.php *

'mysql' => [
    ...,
    ...,
    'engine' => 'InnoDB',
 ] 

解决方案02
编辑config文件夹中的database.php文件。(与上述答案相同的文件)只需编辑,

'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci', 

'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',

我从Laravel 迁移错误中找到了这些:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节问题答案。所以所有的功劳都应该归功于@dexterb 和@Koushik Das

于 2018-03-19T13:18:47.117 回答