Laravel Migration Error:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节laravel 5.3

时间:2017-04-13 05:34:41

标签: laravel laravel-5.3

  

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

     

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

怎么了?我正在使用laravel 5.3

6 个答案:

答案 0 :(得分:5)

参考Laravel NewsLaravel's migration guide

  

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

use Illuminate\Support\Facades\Schema;

function boot()
{
    Schema::defaultStringLength(191);
}

答案 1 :(得分:2)

$rate = $row_cron['rate'];
    $amount = $row_cron['amount'];

它将100%工作。

答案 2 :(得分:0)

该错误主要来自数据库。如果您尝试通过phpmyadmin增加该列的长度,您将得到相同的错误。

答案 3 :(得分:0)

  

如“迁移指南”中所述,要解决此问题,您只需执行此操作即可   编辑你的AppServiceProvider.php文件并在boot方法里面设置一个   默认字符串长度:

Container [pid=12850,containerID=container_1489504424139_0638_01_201123] is running beyond physical memory limits. Current usage: 4.0 GB of 4 GB physical memory used; 8.8 GB of 8.4 GB virtual memory used. Killing container.

之后一切都应该正常工作。

答案 4 :(得分:0)

以防上述解决方案或正在添加的官方解决方案

Schema::defaultStringLength(191);

不起作用。尝试在config文件夹中编辑database.php文件。只需编辑

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

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

,它应该可以工作。希望对您有所帮助。

答案 5 :(得分:0)

更新您的 /app/Providers/AppServiceProvider.php 以包含:

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot() {
    Schema::defaultStringLength(191);
}