首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在没有主键的情况下创建或更改表- Laravel DigitalOcean托管数据库

问无法在没有主键的情况下创建或更改表- Laravel DigitalOcean托管数据库
EN

Stack Overflow用户
提问于 2020-06-16 21:47:02
回答 11查看 29.5K关注 0票数 22

我刚刚使用(托管数据库)将我的应用程序部署到DigitalOcean,在调用php artisan migrate时,我得到了以下错误

代码语言:javascript
复制
SQLSTATE[HY000]: General error: 3750 Unable to create or change a 
table without a primary key, when the system variable 'sql_require_primary_key'
is set. Add a primary key to the table or unset this variable to avoid
this message. Note that tables without a primary key can cause performance
problems in row-based replication, so please consult your DBA before changing
this setting. (SQL: create table `sessions` (`id` varchar(255) not null,
`user_id` bigint unsigned null, `ip_address` varchar(45) null,
`user_agent` text null, `payload` text not null, `last_activity` int not null)
default character set utf8mb4 collate 'utf8mb4_unicode_ci')

当mysql sql_require_primary_key设置为true时,Laravel似乎无法工作。

你有什么解决办法吗?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2020-06-16 22:22:26

根据MySQL文档,这个系统变量的用途是

为了避免复制性能问题:“启用此变量有助于避免在表没有主键时发生的基于行的复制中的性能问题。”

IMHO,对于您的问题有两种可能的选择;

  • 在迁移中添加此表和每个表的主键,包括临时表。这个更好,我认为这样做更方便,因为每个表都没有主键的缺点。

无论是创建新表的语句还是更改现有表的结构的语句,都会强制要求表具有主键。

  • 更改您的提供商,因为根据这里,“我们只支持MySQL v8”。

这里也是错误报告

票数 4
EN

Stack Overflow用户

发布于 2021-04-07 18:46:38

我试图用导入来解决这个问题,以便使用来自MySQL安装的mysqldump文件来执行托管WordPress。我发现将这个添加到文件的顶部确实适用于我的导入。

代码语言:javascript
复制
SET @ORIG_SQL_REQUIRE_PRIMARY_KEY = @@SQL_REQUIRE_PRIMARY_KEY;
SET SQL_REQUIRE_PRIMARY_KEY = 0;

然后我使用JetBrains DataGrip导入,它运行正常,没有错误。

票数 31
EN

Stack Overflow用户

发布于 2022-05-30 17:23:36

从2022年3月开始,您可以通过向数字海洋API发出请求来配置MYSQL和其他数据库。以下是参考资料:https://docs.digitalocean.com/products/databases/mysql/#4-march-2022

修复问题的步骤:

步骤- 1:创建访问数字海洋API的AUTH令牌。https://cloud.digitalocean.com/account/api/tokens

步骤2:通过使用上面生成的承载令牌按下对下面的的Get请求获得数据库集群id。

网址:https://api.digitalocean.com/v2/databases

步骤- 3:使用补丁请求和承载令牌和有效负载一起点击下面的。

网址:ID}/config

有效载荷:{"config": { "sql_require_primary_key": false }}

就这样。效果完美无瑕。

有关更多信息,请参阅API DOCS:https://docs.digitalocean.com/products/databases/mysql/#latest-updates。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62418099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档