laravel - laravel 5.7.16 迁移数据库问题
问题描述
我是 Laravel 的新手。我在迁移用户和密码重置表时遇到问题。
Illuminate\Database\QueryException : SQLSTATE[42000]: 语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节(SQL:过滤表用户添加唯一 users_email_unique(email))
我尝试了很多解决方案,例如(AppServiceProvider,数据库排序规则更改,更改迁移文件),但没有一个给我解决方案。
AppServiceProvider.php
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}
}
数据库.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
],
解决方案
在 AppServiceProvider 中设置 defaultStringLength 后,可能会使用 php artisan serve 重新运行您的项目来解决您的问题。
推荐阅读
- amazon-web-services - AWS Glue 与其开发终端节点之间的差异
- swift - 如何对全局结构进行单元测试?
- asp.net - 使用文件传输 ionic 3 上传图像在 iOS 上不起作用
- python - 在 python 字符串前面加上反斜杠
- python - 如何根据另一列填充列中的缺失值
- javascript - 将同名对象合并为一项
- swift - 如何从表格中删除标题和详细信息占位符标签及其行?
- google-bigquery - 为什么以下 Bigquery 插入失败?
- excel - 跨不同工作表的 VBA 匹配
- ruby-on-rails - 无法在 Rails 应用程序中重置/更新 jQuery Chosen 上的选项