【发布时间】:2018-02-27 01:17:56
【问题描述】:
我正在 node.js
中制作应用程序在 MySQL 表中,我有多个需要唯一的列。当我插入一个不唯一的值时,会返回错误。
- 如何确定是哪一列出现错误?例如,我需要用户名和电子邮件列是唯一的,如果我插入现有用户名,我会收到“ER_DUP_ENTRY”错误代码。
这里的问题是我不确定如何确定是哪一列给了我错误。该错误还包含一条消息:
sqlMessage: 'Duplicate entry \'GrimReaper\' for key \'username_UNIQUE\''
当然,我可以了解如何提取消息的最后一部分(username_UNIQUE),但我想知道是否有更好的方法来实现这一点?
我需要这个的原因是为了能够向客户端发送一条消息,指出指定的用户名或电子邮件不可用。
谢谢!
【问题讨论】:
-
另一种选择:为什么不只是在用户填写输入字段后进行测试,如果输入的数据存在与否。使用 AJAX ..
-
最后一个值是约束失败的唯一索引的名称。如果您想在输出中使用更好的名称,请为您的索引选择更好的名称。
-
我从来没有说过我想要更好的名字,我只是想知道是否有正确的方法来获取列的名称,而不是从这里提取它。这并不难,我只是好奇。该列也被命名为:“用户名”,我认为这对于存储“用户名”的东西来说是最好的。关于 Hamza 提到的替代方案,我宁愿不查询数据库,从 MySQL 检索错误更有效。
-
对我来说,你是正确的。由于您识别重复列的方法简单可靠,因此请继续使用。