【发布时间】:2020-08-15 13:58:25
【问题描述】:
我目前将 JSON 数据存储在压缩后的 LONGBLOB 列中。我想将此列更改为 JSON 列,以便 O 可以使用 MySQL 中的 JSON 函数。
但是,当我尝试使用带有 JSON 列的 MySQL 插入一行时,我意识到 insert_id 始终为 0,并且所有插入都失败了。然后我检查了 PHP MySQLi 文档并意识到 send_long_data(我用来发送 JSON 数据)仅可用于 TEXT 和 BLOB 列。
是否有适用于 JSON 列的 send_long_data 的替代方法?使用 bind_param 和字符串发送 JSON 数据是行不通的,因为我相信我的大部分数据都会超过 max_allowed_packet。
【问题讨论】:
-
天哪。对如此庞大的 JSON 数据使用 JSON 函数,以至于它会超过 max_allowed_packet。你的数据库对你做了什么让你想如此残忍地折磨它?
-
为什么要在数据库中存储巨大的压缩 json?只需将其作为文件存储在文件系统中即可。 MySQL 用于关系数据。
-
我想存储草稿帖子。通常帖子存储在一个表中,该表链接到其他表,例如带有外键的图片表。但是,我不想将草稿帖子表与所有这些其他表链接起来。所以我的前端只是通过 AJAX(在客户端压缩)将整个草稿发送到我的 REST API,它将它转储到一个列中。但是,缺点是我无法读取服务器端草稿帖子中的数据,除非我对其进行 ungzip 和 json_decode。我阅读了有关 MySQL JSON 函数的信息,并认为它可能有助于加快我的应用程序的速度。