【问题标题】:Nodejs mariadb INSERT INTO TABLENodejs mariadb 插入表
【发布时间】:2020-02-29 20:53:29
【问题描述】:

我做错了什么?

const mariadb = require("mariadb");

(() => {
  setTimeout(async () => {
    console.log("connecting to db...");
    try {
      const pool = await mariadb.createPool({
        host: "localhost", //172.17.0.1
        user: "root",
        database: "gamifydb",
        port: "3306",
        password: "password"
      });
      const conn = await pool.getConnection();
      global.conn = conn;
      console.log("mariadb db connected");
    } catch (error) {
      throw error;
    }
  }, 1000);
})();

const achievement = {
    name: "lorem",
    user_id: "lorem",
    challenge_id:2,
    desc:"lorem"
}

exports.createAchievement = async achievement => {
  try {
    const response = await global.conn.query(
      "INSERT INTO achievements value (?,?,?,?);",
      Object.values(achievement)
    );
    console.log(response);
    return response;
  } catch (error) {
    throw error;
  }
};

"(conn=1194, no: 1136, SQLState: 21S01) 列计数与第 1 行的值计数不匹配\nsql: INSERT INTO 成就值 (?,?,?,?); - 参数:['lorem','lorem',2,'lorem']" }

【问题讨论】:

  • 这是一个仔细阅读错误信息可以直接找到答案的问题。

标签: mysql sql node.js insert mariadb


【解决方案1】:

您的表 achievements 的列似乎多于 4 列,或少于 4 列。

为您的 INSERT 语句中的列命名。像这样的东西可能会起作用

INSERT INTO achievements (name, user_id, challenge_id, desc)
VALUES (?,?,?,?);

哦,这是 VALUES,而不是 value

【讨论】:

    猜你喜欢
    • 2021-03-20
    • 2017-04-17
    • 2017-04-12
    • 2016-10-09
    • 2016-10-19
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多