gpt4 book ai didi

尽管输入了唯一的数据,MySql 仍提示 'Duplicate entry'

转载 作者:行者123 更新时间:2023-11-29 08:58:24 24 4
gpt4 key购买 nike

我在 mysql 数据库中有这个表:

mysql> show columns from wifi_network_config_auth_algorithm;
+------------------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-------------+------+-----+---------+-------+
| wifi_network_config_id | int(11) | NO | PRI | NULL | |
| auth_algorithm | varchar(50) | NO | PRI | NULL | |
+------------------------+-------------+------+-----+---------+-------+

该表是使用 liquibase 创建的。表创建本身不定义主键。创建表后,使用以下 liquibase 命令将 2 列的组合设置为主键:

<addPrimaryKey tableName="wifi_network_config_auth_algorithm"
columnNames="wifi_network_config_id,auth_algorithm"
constraintName="pk_wifi_network_config_auth_algorithm"/>

现在,当您执行此命令将数据加载到该表中时:

LOCK TABLES `wifi_network_config_auth_algorithm` WRITE;
INSERT INTO `wifi_network_config_auth_algorithm` VALUES
(1, 'OPEN'),
(1, 'SHARED'),
(2, 'SHARED'),
(2, 'LEAP');
UNLOCK TABLES;

你得到:

ERROR 1062 (23000): Duplicate entry '1' for key 2

由于两列的组合是主键,因此两列中的数据组合应该是唯一的 - 对于上面显示的数据来说也是如此。 mysql 为什么会提示?

此外,它还提示值“1”被分配给键 2,这是没有意义的。我将插入更改为:

INSERT INTO `wifi_network_config_auth_algorithm` (`wifi_network_config_id`, `auth_algorithm`)

但它没有任何区别 - 来自 mysql 的同样的提示。

谢谢,哈里

最佳答案

这对我有用。在执行插入语句之前表是否为空或缺少这些值?

如果我运行此示例两次,我会收到一条错误消息:

Duplicate entry '1-OPEN' for key 'PRIMARY'

首先调用DELETE FROM wifi_network_config_auth_algorithm可以避免这种情况。

否则,主键的创建方式一定有问题,因为您的错误消息有所不同。

我使用以下内容创建了一个测试表:

CREATE TABLE `test` (
`wifi` int(11) NOT NULL,
`auth` varchar(50) NOT NULL,
PRIMARY KEY (`wifi`,`auth`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

关于尽管输入了唯一的数据,MySql 仍提示 'Duplicate entry',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com