在 Linux 但不是 Windows 上解析的 MySQL JSON 列

问题描述

存在一个带有 users 表的数据库,该表包含 2 列,userIdsaveduserId一个简单的增量,而 saved 是 JSON 数据。

存在单行:

userId: 1,保存: "{"value": 1}"

当以下代码在 Windows 上运行时

    const MysqL = require('MysqL2');
    
    async function start() {
        const connection = MysqL.createConnection({
            host: 'localhost',user: 'root',database: 'database'
        });
        connection.query('SELECT saved FROM users WHERE userId = 1',function(err,results,fields) {
            console.log(results);
        })
    }
    
    start();

[ TextRow { saved: '{"value": 1}' } ] 显示在 Windows 上

[ TextRow { saved: { value: 1 } } ] 在 Linux 上显示

究竟是什么在 Linux 上解析了我的 JSON 而不是在 Windows 上解析我的 JSON?


MysqL 版本不同

MysqL Ver 14.14 distrib 5.7.33,适用于 Linux (x86_64)

MysqL Ver 15.1 distrib 10.4.17-MariaDB,适用于 Win64 (AMD64)

我不确定如何将它们都设置为相同的版本。 Windows 机器正在运行 XAMPP,这看起来很麻烦。我现在正在尝试安装两者的相同版本。

users 表是 InnoDB utf8mb4_general_ci

字段 类型
用户 ID int(10)
已保存 长文本 utf8mb4_bin

我实际上并没有将此代码用于任何事情,我使用 ORM 来执行此操作,但它使用 MysqL2 进行查询,我将错误追溯到 MysqL2,然后只是从 GitHub 复制粘贴示例代码以测试它是否是罪魁祸首。如果我真的在使用它,我会使用基于 Promise 的代码

MysqL2 在两个平台上确实是相同的版本。 2.2.5.

有趣的是,MysqL 包不会出现该问题。我认为这表明包本身发生了一些奇怪的事情。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)