【问题标题】:How to handle Error: ER_DUP_ENTRY: Duplicate entry in nodejs如何处理错误:ER_DUP_ENTRY:nodejs 中的重复条目
【发布时间】:2017-08-03 15:14:42
【问题描述】:

当出现重复条目​​时,我在 mysql 数据库中有唯一列,它给出了错误:ER_DUP_ENTRY: Duplicate entry 如何处理 nodejs 的错误表单

【问题讨论】:

  • 如何处理这些错误信息?
  • 我的最终目标是检查表中是否已存在电子邮件 ID(如果存在)发送状态为“电子邮件 ID 已存在”
  • 好吧,如果您收到 ER_DUP_ENTRY 消息,并且知道您可能违反的唯一唯一键是电子邮件地址,那么您只需返回您在评论中描述的消息。
  • @Shadow 如果我们在一个表中有两个唯一列怎么办?
  • @SarojSasmal MySQL 的默认错误消息也会返回违反的唯一/主键名称。

标签: javascript mysql node.js express


【解决方案1】:

如果您正在使用 sequelize,这会有所帮助:

try {
        //here you try to add something in your database;
    } catch (error) {
       if (error.parent.code === 'ER_DUP_ENTRY') {
           //here you can handle this error;
       } else {
           //here you can handle other errors;
        }
    }

【讨论】:

    【解决方案2】:

    将保存放在 try 块中并捕获所有错误。添加特定的重复检查并将其余部分作为默认值处理

    try {
        return await this.userProfilesRepository.save(userProfile);
    } catch (err) {
       if (err.code === 'ER_DUP_ENTRY') {
           //handleHttpErrors(SYSTEM_ERRORS.USER_ALREADY_EXISTS);
       } else {
           //handleHttpErrors(err.message);
        }
    }
    

    【讨论】:

      【解决方案3】:

      首先您必须通过选择查询检查重复数据。那么如果您的结果长度不为零,那么请编写您的插入查询。

      router.post('/process', function(req, res, next) {
      
      var mysql= require('mysql');
      
      var connection=mysql.createConnection({
      
        host:'localhost',
        user:'root',
        password:'',
        database:'user',
        multipleStatements: true
      });
      
      connection.connect(function(err){
      
             if(err)
             {
                throw err;
             }
            else
             {
                console.log("Connected");
      
                var name= req.body.name;
                console.log(name);
                var email=req.body.email;
                console.log(email);
                var password=req.body.password;
      
                if (name=="" || email=="" || password=="") {
                  res.render('process', {flag: false, condition: false,fail:false});     
                }
      
                else
                {
                    var sql="SELECT * from user where name='"+name+"'";
      
                    connection.query(sql, function(err,result){
      
                         if(result.length!=0)
                         {
                            res.render('process', {name:name, condition:false, fail:false});
                         }
      
                        else
                        {
                          var sql="INSERT INTO user VALUES('','"+name+"','"+email+"','"+password+"')";
                          connection.query(sql, function(err,result){
      
                          res.render('process', {name:name, flag: true, condition: true});
                        });   
                        }
      
      
                    });
                }
             }
      
      });
      
      });
      

      【讨论】:

        猜你喜欢
        • 2011-03-09
        • 1970-01-01
        • 2019-11-26
        • 2012-02-04
        • 2013-01-14
        • 2018-02-04
        • 2018-05-19
        • 1970-01-01
        相关资源
        最近更新 更多