输入命令时出现 sql 错误
Posted
技术标签:
【中文标题】输入命令时出现 sql 错误【英文标题】:I have an sql error when i type in a command 【发布时间】:2021-03-02 14:10:13 【问题描述】:所以我正在尝试为我的机器人进行动态命令处理,但它不起作用。在没有动态命令处理的情况下一切正常。 所以这是我输入命令时遇到的错误!work:
UniqueConstraintError [SequelizeUniqueConstraintError]: Validation error
at Query.formatError (C:\Users\mmede\Desktop\Discord Bot\node_modules\sequelize\lib\dialects\sqlite\query.js:409:16)
at Query._handleQueryResponse (C:\Users\mmede\Desktop\Discord Bot\node_modules\sequelize\lib\dialects\sqlite\query.js:72:18)
at Statement.afterExecute (C:\Users\mmede\Desktop\Discord Bot\node_modules\sequelize\lib\dialects\sqlite\query.js:246:27)
at Statement.callbackTrampoline (internal/async_hooks.js:129:14)
errors: [
ValidationErrorItem
message: 'user_id must be unique',
type: 'unique violation',
path: 'user_id',
value: '485384232131100693',
origin: 'DB',
instance: [users],
validatorKey: 'not_unique',
validatorName: null,
validatorArgs: []
],
fields: [ 'user_id' ],
parent: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: users.user_id]
errno: 19,
code: 'SQLITE_CONSTRAINT',
sql: 'INSERT INTO `users` (`user_id`,`balance`) VALUES ($1,$2);'
,
original: [Error: SQLITE_CONSTRAINT: UNIQUE constraint failed: users.user_id]
errno: 19,
code: 'SQLITE_CONSTRAINT',
sql: 'INSERT INTO `users` (`user_id`,`balance`) VALUES ($1,$2);'
,
sql: 'INSERT INTO `users` (`user_id`,`balance`) VALUES ($1,$2);'
这是我的工作脚本:
const Discord = require('discord.js');
const Users, CurrencyShop = require('../dbObjects');
const currency = new Discord.Collection();
Reflect.defineProperty(currency, 'add',
//eslint-disable-next-line func-name-matching
value: async function add(id, amount)
const user = currency.get(id);
if (user)
user.balance += Number(amount);
return user.save();
else
try
const newUser = await Users.create( user_id: id, balance: amount );
currency.set(id, newUser);
return newUser;
catch (err)
// print the error details
console.log(err);
,
);
module.exports =
name: 'work',
description: 'balancas',
execute(message, async)
message.channel.send('You hacked someones computer and you gained 1million vbucks')
currency.add(message.author.id, 1000000);
如果有人愿意帮助我,我将不胜感激。我是 sql 新手,所以如果你能解释我在哪里犯了错误,那就太好了。
【问题讨论】:
错误信息说你正在尝试插入一个已经存在于表中的 user_id 值,这是不允许的 - 'user_id must be unique'。跨度> 【参考方案1】:问题是您正试图将一个条目(用户)插入到用户表中,其中 user_id
已经存在。
由于 users 表有一个 UNIQUE
约束,该列是该表的主键并且可以有没有重复 user_id
s 即没有两个用户可以有相同的 user_id。
如果您想编辑特定用户,请尝试update
命令。
【讨论】:
所以我现在得到这个AssertionError [ERR_ASSERTION]: Missing where attribute in the options parameter
当我输入而不是 user.create, user.update以上是关于输入命令时出现 sql 错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 SQL 查询中输入 0 到 11 之间的月份时出现 oracle 错误 ORA-01843