我就是找不到适合这个MySQL“Exists()”错误的解决方案
我已经搜索stackoverflow大约一个小时了,但没有解决方案可以解决我的问题 我想运行以下代码:我就是找不到适合这个MySQL“Exists()”错误的解决方案,mysql,sql,node.js,parsing,parse-error,Mysql,Sql,Node.js,Parsing,Parse Error,我已经搜索stackoverflow大约一个小时了,但没有解决方案可以解决我的问题 我想运行以下代码: for (var skin in body){ connection.query(`IF NOT EXISTS(SELECT MarketName FROM Skins WHERE MarketName = ?); THEN INSERT INTO Skins (MarketName) VALUES (?);
for (var skin in body){
connection.query(`IF NOT EXISTS(SELECT MarketName FROM Skins WHERE MarketName = ?);
THEN
INSERT INTO Skins (MarketName) VALUES (?);
END IF;`,[skin, skin]); }
但如果我使用nodejs运行此操作,则会出现以下错误:
/var/www/html/bot/node_modules/mysql/lib/protocol/Parser.js:80
抛出错误;//重新显示非MySQL错误
^
错误:ER_PARSE_错误:您的SQL语法有错误;
查看与您的MySQL服务器版本相对应的手册,以了解可在“如果不存在,请从中选择MarketName”附近使用的正确语法
皮肤,其中MarketName=第1行的“Nova | Moon in Li”
在Query.Sequence._packetToError/var/www/html/bot/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14
在Query.ErrorPacket/var/www/html/bot/node_modules/mysql/lib/protocol/sequences/Query.js:77:18
在Protocol._parsePacket/var/www/html/bot/node_modules/mysql/lib/Protocol/Protocol.js:279:23
在Parser.write/var/www/html/bot/node_modules/mysql/lib/protocol/Parser.js:76:12
在Protocol.write/var/www/html/bot/node_modules/mysql/lib/Protocol/Protocol.js:39:16
在插座上/var/www/html/bot/node_modules/mysql/lib/Connection.js:103:28
在emitOne事件中。js:115:13
在Socket.emit events.js:210:7
在addChunk _stream_readable.js:266:12
在readableAddChunk\u stream\u readable.js:253:11
----------
在Protocol.\u enqueue/var/www/html/bot/node\u modules/mysql/lib/Protocol/Protocol.js:145:48
在Connection.query/var/www/html/bot/node_modules/mysql/lib/Connection.js:208:25
应请求。_callback/var/www/html/bot/index.js:531:16
在Request.self.callback/var/www/html/bot/node_modules/Request/Request.js:186:22
在两个事件中。js:125:13
at Request.emit events.js:213:7
应要求/var/www/html/bot/node_modules/request/request.js:1163:10
在emitOne事件中。js:115:13
at Request.emit events.js:210:7
在收到消息时/var/www/html/bot/node_modules/request/request.js:1085:12
非常感谢您的帮助。MySQL只允许在编程块中使用IF语句—存储过程、触发器等
正确的方法是在SkinsMarketName上创建唯一的索引或约束。这样,数据库就确保了数据的完整性。您可以通过以下方式执行此操作:
create unique index unq_skins_marketname on Skins(MarketName);
然后,尝试插入副本将导致错误。通常,您可以通过执行以下操作来避免这种情况:
insert into skins(marketname)
values (?)
on duplicate key marketname = values(marketname); -- this is a no-op
首先:谢谢你回答我的问题,给了我这么好的建议。但我只是尝试了一下,我想我要通过nooby来实现这一点。你能再帮我一点忙吗?我讨厌吸血鬼,但我需要你的帮助这是一个完整代码的链接:如果你不能帮助我或不想进一步帮助我,这没关系,你已经帮了我很多^^