Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我就是找不到适合这个MySQL“Exists()”错误的解决方案_Mysql_Sql_Node.js_Parsing_Parse Error - Fatal编程技术网

我就是找不到适合这个MySQL“Exists()”错误的解决方案

我就是找不到适合这个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 (?);

我已经搜索stackoverflow大约一个小时了,但没有解决方案可以解决我的问题

我想运行以下代码:

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来实现这一点。你能再帮我一点忙吗?我讨厌吸血鬼,但我需要你的帮助这是一个完整代码的链接:如果你不能帮助我或不想进一步帮助我,这没关系,你已经帮了我很多^^