Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.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
Javascript Discord机器人开发中的SQL语法问题(mySQL 8.0)_Javascript_Mysql_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript Discord机器人开发中的SQL语法问题(mySQL 8.0)

Javascript Discord机器人开发中的SQL语法问题(mySQL 8.0),javascript,mysql,node.js,discord,discord.js,Javascript,Mysql,Node.js,Discord,Discord.js,我知道这个问题以前在这个网站上已经被处理过了,但是我已经尝试了我所看到的一切,并且在一个赛季中没有任何效果。。。所以它可能是更具体的东西。再一次,如果我错过了一些东西,我道歉,但我是新的,对为什么这不起作用感到沮丧 我的代码是: bot.on(`message`, async message => { if(message.author.bot) return; if(message.channel.type === "dm") return; con.query(`SELE

我知道这个问题以前在这个网站上已经被处理过了,但是我已经尝试了我所看到的一切,并且在一个赛季中没有任何效果。。。所以它可能是更具体的东西。再一次,如果我错过了一些东西,我道歉,但我是新的,对为什么这不起作用感到沮丧

我的代码是:

bot.on(`message`, async message => {
  if(message.author.bot) return;
  if(message.channel.type === "dm") return;

  con.query(`SELECT * FROM profile WHERE id = '${message.author.id}'`, (err, rows) => {
    if(err) throw err;

    var sql;

    if(rows.length < 1) {
      var sql = (`INSERT INTO profile (id, username) VALUES (${message.author.id}, ${message.author.tag})`);
    };

    con.query(sql, console.log);
    if (err) throw err;
    console.log("1 record inserted");
  });
bot.on(`message`,async message=>{
if(message.author.bot)返回;
if(message.channel.type==“dm”)返回;
con.query(`SELECT*FROM profile WHERE id='${message.author.id}`,(err,rows)=>{
如果(错误)抛出错误;
var-sql;
如果(行数长度<1){
var sql=(`INSERT-INTO-profile(id,username)值(${message.author.id},${message.author.tag})`);
};
con.query(sql、console.log);
如果(错误)抛出错误;
控制台日志(“插入1条记录”);
});
我正在尝试将此人的不一致ID和用户名放入数据库中。我对这段代码有几十种不同的配置,它不断给我语法错误。我注意到mySQL 8.0与我看过的其他教程有非常不同的语法要求。我参考了mySQL网站来尝试解决这个问题我的问题。我在这个问题上花了两天时间,我已经筋疲力尽了,所以我请求帮助


提前感谢您的时间!:)

快速浏览第二个查询中的引号缺失。假设这两个字段都是字符串类型,则应如下所示:

sql = (`INSERT INTO profile (id, username) VALUES ('${message.author.id}', '${message.author.tag})'`);

(如果
id
username
不是字符串,而是数字类型,则可以删除相应的

ID是一组18个数字,因此我也删除了“”号。我尝试按照您的建议执行操作,但仍然出现语法错误。我不知道我运行了多少次,但在那一行中它一直失败。显然出了问题,我就是想不出是什么。。。“sqlMessage:'您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以了解在第1行的\'\'附近使用的正确语法,”,当我将“”放入时,但“代码:'ER\u WARN\u DATA\u OUT\u OUT\u OF \u RANGE”当我没有在id(18位数字)周围加上“”时。在mySQL/数据库中,我确实将id的类型设置为Int(18),用户名的类型设置为Varchar(30)。@Zarvix 18位对于普通Int来说太多了(大写约9位)。尝试使用
BIGINT
BIGINT UNSIGNED
作为类型(大写为18-19位)。这次我在将类型更改为BIGINT后出现此错误…“代码:'ER_NO_DEFAULT_FOR_FIELD',sqlMessage:'FIELD'Name\'没有默认值',“我以前在尝试解决此问题时从未见过此错误。”是一个我将要设置的名称,允许服务器上的人通过机器人提问创建RP字符,目前已设置在数据库中。答复将存储在数据库中,以便成员在战斗时轻松检索。因此,我最终将为名称设置值。在获得profil之前,我是否应将NOT NULL更改为NULLe创建工作正常?@Zarvix是一个选项。您需要在插入时为每个
notnull
字段提供一些值,或者在创建表时提供一个默认值。