由于某种原因,每当我尝试更新表中的记录时,都会收到“键'PRIMARY'的重复条目'5687'”错误。我的查询是:
UPDATE
`patients`
SET
first_name=AES_ENCRYPT('Floyd','mykey'),
last_name=AES_ENCRYPT('Resler','mykey'),
birthdate='1899-01-01 00:00:00',
sex='M',
account=AES_ENCRYPT('123-456-789','mykey'),
user_id='0',
hospital_id='2'
WHERE
patient_id='5687'
此表的任何更新都会发生这种情况。我从事MySQL已有很长时间了,从未见过在UPDATE上发生这种情况。顺便说一句,我不是真的使用“ mykey”作为加密密钥!
编辑 这是我的CREATE TABLE输出:
CREATE TABLE `patients` (
`patient_id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(255) NOT NULL DEFAULT '',
`last_name` varchar(255) NOT NULL DEFAULT '',
`birthdate` date NOT NULL DEFAULT '0000-00-00',
`sex` char(1) NOT NULL DEFAULT '',
`date_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`account` varchar(255) NOT NULL DEFAULT '',
`user_id` int(11) NOT NULL,
`deleted` bit(1) NOT NULL,
`hospital_id` int(11) NOT NULL,
`deleted_by_id` int(11) NOT NULL,
`deleted_date` datetime NOT NULL,
`no_piccs` int(11) NOT NULL,
`deceased` tinyint(4) DEFAULT '0',
`converted` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`patient_id`),
KEY `fname` (`first_name`),
KEY `lname` (`last_name`),
KEY `deleted` (`deleted`),
KEY `hospital_id` (`hospital_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5938 DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC
我做了仔细检查,以确保没有重复的Patient_id。