【问题标题】:How do I use send_long_data for a MySQL JSON column?如何将 send_long_data 用于 MySQL JSON 列?
【发布时间】: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_pa​​cket。

【问题讨论】:

  • 天哪。对如此庞大的 JSON 数据使用 JSON 函数,以至于它会超过 max_allowed_pa​​cket。你的数据库对你做了什么让你想如此残忍地折磨它?
  • 为什么要在数据库中存储巨大的压缩 json?只需将其作为文件存储在文件系统中即可。 MySQL 用于关系数据。
  • 我想存储草稿帖子。通常帖子存储在一个表中,该表链接到其他表,例如带有外键的图片表。但是,我不想将草稿帖子表与所有这些其他表链接起来。所以我的前端只是通过 AJAX(在客户端压缩)将整个草稿发送到我的 REST API,它将它转储到一个列中。但是,缺点是我无法读取服务器端草稿帖子中的数据,除非我对其进行 ungzip 和 json_decode。我阅读了有关 MySQL JSON 函数的信息,并认为它可能有助于加快我的应用程序的速度。

标签: php mysql json mysqli


【解决方案1】:

你可以这样做,但这是不好的做法:

创建一个TEXT字段,插入数据,然后使用UPDATE将TEXT字段中的数据复制到JSON,然后通过UPDATE清除TEXT字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    • 2021-10-08
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2017-12-31
    相关资源
    最近更新 更多