gpt4 book ai didi

php - MySQL:唯一键

转载 作者:太空宇宙 更新时间:2023-11-03 12:03:56 26 4
gpt4 key购买 nike

我有一个奇怪的问题,无论如何,在我看来很奇怪。我有一个包含 ID、用户名、电子邮件、密码等的数据库...ID 是主键,用户名和电子邮件都分配有 UNIQUE 键。

现在奇怪的是,当我提交时,可以说以下值;

username: ActionHank
email: ah@ah.com

已添加。

现在,当我尝试再次添加相同的值时,我收到一条错误消息,指出这是不允许的,因为这将是一个重复的条目。这很好用。但是,当我接下来输入以下内容时;

username: ActionHank2
email: ah@ah.com

它只是再次添加它,所以 2 个用户拥有相同的电子邮件地址,而我已经为电子邮件行提供了 UNIQUE 键。我也可以只更改电子邮件地址而不是用户名,它将被添加。所以不知何故,MySQL 只注册了一个 UNIQUE 键或其他东西,我很困惑。

有人可以帮我解决这个问题吗?谢谢

编辑:我使用 phpMyAdmin 创建表并将其导出到 SQL,下面是创建表的样子:

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(25) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`date_registered` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip_address` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`,`email`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=54 ;

所以我认为它具有 Michael 和 Kingkero 所建议的复合 Material 。我如何在 phpMyAdmin 中解决这个问题?

最佳答案

您已将 usernameemail 的组合定义为唯一的。如果您希望每个都是唯一的,则需要定义单独的唯一约束:

create table . . .  
unique username,
unique email
)

或者,因为这些是单列,您可以这样做:

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`username` varchar(25) NOT NULL UNIQUE,
`email` varchar(255) NOT NULL UNIQUE,
`password` varchar(255) NOT NULL,
`date_registered` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`ip_address` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=54 ;

关于php - MySQL:唯一键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27594428/

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