尝试获取数据库信息时出现问题(mysql)

Posted

技术标签:

【中文标题】尝试获取数据库信息时出现问题(mysql)【英文标题】:Problem trying to get database information (mysql) 【发布时间】:2021-10-13 09:55:05 【问题描述】:

我正在 Discord.js 中制作一个不和谐机器人,我需要数据库来检索和重写有关特定人员工作的信息 例如: 用户 1 想以农民的身份工作,因此用户 1 将输入.job farmer,他的信息将被存储或重写。

我正在使用 mysql2

这是我在mysql中用于表格的代码:

CREATE TABLE users (
    id CHAR(18) PRIMARY KEY,
    money INT,
    stable TINYINT,
    job VARCHAR(15),
    banned INT
);

这是我用于作业命令的代码(大写字母的 cmets 突出显示了我可能遇到问题但我不知道如何解决它们的地方)。

const db = require('../db.js');

module.exports = 
    name: 'job',
    description: 'selecione um trabalho para trabalhar',
    group: 'economia',
    aliases: ['trabalho','jobs','trabalhos'],

    async execute(message, args)
        const user_id = message.author.id;
        const [rows] = await db.query(`SELECT job FROM users WHERE id = $user_id`);

        var jobs = ['pintor','fazendeiro','pedreiro'];
        

        // create row
        if (rows[0] == undefined)
            db.query(`INSERT INTO users (ID, MONEY, STABLE, BANNED) VALUES ($user_id, 0, 10, 0)`);
            
            if (!args[0])
                message.reply(`Profissões disponíveis: $jobs. \n Para selecionar uma apenas passe o argumento depois de "job" no comando`);
            

         
        
        if (args.length == 1) // check for args 
            if(jobs.includes(args[0]))
                await db.query(`UPDATE users SET job = '$args[0]' WHERE id = $user_id`); //HERE IT WON'T UPDATE THE JOB
                return message.reply(`agora você é um $args`);
            
            else
                message.reply('não existe essa profissão... Profissões disponíveis: carpinteiro, pintor.');
            
        
       
            
        
        
        // user has a job
        if (rows[0] !== null) 
            message.reply(`você é um $rows[0]. \n Profissões disponíveis: pintor, carpinteiro.`);
         //PROBLEM HERE WHERE IT SHOWS '[object Object]' INSTEAD OF THE ACTUAL JOB 
        // doesn't have a job
        else 
            message.reply(`profissões disponíveis: $jobs. \n Para selecionar uma apenas passe o argumento depois de "job" no comando`);
        
        
    

【问题讨论】:

这似乎是 MySQL 的一个非常老的版本。你确定吗? :) SELECT VERSION(); 进行验证。 版本为8.0.26 好的,所以我修复了更新表格的主要问题,现在我只需要修复它显示 [object Object] 表格没有更新的部分,因为我没有包含要插入行的值上的 ''。 【参考方案1】:

主要问题是表格的更新,表格没有更新,因为我没有在要插入行的值上包含“”。

我已经修好了 它说:

const [rows] //rest of code

我改成:

const [rows,fields]//rest of code

我遇到了这个问题,因为我认为我不需要“字段”,因为我的编辑程序告诉我“字段”已定义但从未使用过,所以我想,好吧,那我就删除它吧.. .(原来这是一个愚蠢的想法,我完全忘记了这一点)

【讨论】:

以上是关于尝试获取数据库信息时出现问题(mysql)的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试从 Mysql 中获取数据时出现此问题 客户端中的握手错误(OS ErrorWRONG_VERSION_NUMBER(tls_record.cc:242)

调用 MySQL 存储过程时出现数据包乱序错误

从画布正确获取信息并通过带有 node-fetch 的 webhook 将信息发送到 discord 时出现问题

尝试使用 jQuery 获取 JSON 数据时出现 TypeError

在 angularjs 中的 onInit() 方法中获取用户详细信息后尝试显示用户详细信息时出现错误

尝试获取关系中的数据时出现 Symfony 错误