Mid*_*abu 5 mysql primary-key laravel digital-ocean mysql-8.0
我最近在 Digital Ocean 创建了一个数据库服务器,它仅支持 MySQL 8。当我尝试导入 Laravel 项目的数据库时,它报告以下错误:
设置系统变量“sql_require_primary_key”时,无法创建或更改没有主键的表。
所以我尝试通过运行命令将 mySQL Server 中的 sql_require_primary_key 更改为 OFF,
设置 sql_require_primary_key = 关闭;
并且更改成功,但是之后又自动恢复到之前的设置。
在 Laravel 中,一些主键是在创建表后设置的,因此在迁移时会显示错误。这是我的实时项目,因此我无法修改已经创建的迁移。
有人知道如何在 MySQL 8 上永久更改 sql_require_primary_key 吗?
一个临时的解决方法是sql_require_primary_key为 Laravel 项目添加关闭,您可以为每个数据库连接添加一条语句。
在里面Illuminate/Session/Console/stubs/database.stub,添加上面的内容Schema::create():
use Illuminate\Support\Facades\DB;
DB::statement('SET SESSION sql_require_primary_key=0');
Schema::create('sessions' ...
Run Code Online (Sandbox Code Playgroud)
完成迁移和恢复后,您可以删除此更改。
如果您使用 Digital Ocean 的 API,这里有关于 API 的文档。或者,您可以联系他们的支持人员,为您的服务器关闭该要求。
| 归档时间: |
|
| 查看次数: |
11602 次 |
| 最近记录: |