[Illuminate \ Database \ QueryException] SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节(SQL:alter tabl e users添加唯一users_email_unique(email))
[PDOException] SQLSTATE [42000]:语法错误或访问冲突:1071 指定密钥太长;最大密钥长度为767字节
怎么了?我正在使用laravel 5.3
答案 0 :(得分:5)
参考Laravel News和Laravel'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);
}