我最近在Digital Ocean中创建了一个数据库服务器,它只支持MySQL 8。当我尝试导入我的Laravel项目的数据库时,它报告了这个错误:
Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set.
所以我尝试通过运行命令在 mySQL 服务器中将 sql_require_primary_key 更改为 OFF,
设置 sql_require_primary_key = off;
并且修改成功,但是之后又自动回到之前的设置。
在 Laravel 中,一些主键是在创建表后设置的,所以在迁移时会显示错误。这是我的实时项目,因此我无法修改我已经创建的迁移。
有人知道如何在 MySQL 8 上永久更改 sql_require_primary_key 吗?
最佳答案
临时解决方法是为 Laravel 项目添加 turn sql_require_primary_key
off,您可以为每个数据库连接添加一条语句。
在 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' ...
完成迁移和恢复后,您可以删除此更改。
如果你使用 Digital Ocean 的 API,有 documentation on the API here .或者,您可以联系他们的支持人员为您的服务器关闭该要求。
关于mysql - 如何在 Laravel 的 MySQL 8 中永久更改 sql_require_primary_key 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66149804/