问题描述
存在一个带有 users
表的数据库,该表包含 2 列,userId
和 saved
。 userId
是一个简单的增量,而 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 (将#修改为@)