mysql - Nodejs mariadb 插入表
问题描述
我究竟做错了什么?
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']" }
解决方案
看起来您的表achievements
有超过 4 个或少于 4 个列。
命名 INSERT 语句中的列。像这样的东西可能会起作用
INSERT INTO achievements (name, user_id, challenge_id, desc)
VALUES (?,?,?,?);
哦,这是价值,而不是value
。
推荐阅读
- html - 如何在 Cypress 中创建基本的普通测试报告
- ionic5 - 将数据传递到 Ionic 5 中的弹出框
- html - CSS 导航栏边框
- node.js - 将具有函数的对象从一个组件传递到另一个组件(app.js 到 navbar.js)
- python - 熊猫按组填充多列
- lua - ESP8266 运行 NodeMCU - 检测脉冲流开始/停止
- javascript - 如何让 Highcharts 图例专注于其所属的图表?
- sql - 我可以将日期行转换为列而不必在数据透视中指定日期吗?甲骨文 SQL
- bash - bash 脚本错误 let:表达式中的语法错误(符号错误为 << 0:6 >> )
- python - Flask API 的问题——它只返回我尝试抓取的最后一个页面