You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将JSON存入MySQL失败,报列数不匹配错误求解决方案

解决MySQL插入时"Column count doesn't match value count"错误

错误原因

你直接将JavaScript对象minPrice作为参数传入db.query,mysql2会自动把对象解析为type = 'BigNumber', hex = '0x1a'这样的键值对形式,导致VALUES子句里的参数数量从4个变成了5个,和你指定的4列(tokenId,uri,minPrice,signature)数量不匹配,从而触发该错误。

解决方案

由于你的minPrice列定义为JSON类型,需要先把JavaScript对象转换为JSON字符串,再传入SQL语句。使用JSON.stringify()方法处理minPrice即可:

app.post("/api/create", (req, res) => {
    // 将minPrice对象转为JSON字符串
    const minPrice = JSON.stringify(req.body.minPrice);
    const uri = req.body.uri;
    const tokenId = req.body.tokenId;
    const signature = req.body.signature;

    db.query("INSERT INTO Details (tokenId,uri,minPrice,signature) VALUES (?,?,?,?)", [tokenId, uri, minPrice, signature], (err, result) => {
        if (err) {
            console.log(err)
        }
        console.log(result)
    });
})

验证说明

修改后,minPrice会以JSON字符串形式存入数据库,符合表结构中JSON类型列的存储要求,同时参数数量和列数保持一致,即可解决报错问题。

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:45:35