我最近从供应商那里接手了一个项目,它有这个 DDL。
CREATE TABLE `user` (
`User_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Username` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Password` char(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Employee_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Role_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Last_Login` datetime DEFAULT NULL,
`T_C` int DEFAULT '0',
`Locale_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Warehouse_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Client_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Status` varchar(45) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
`Creation_Date` datetime DEFAULT NULL,
`Created_By` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Update_Date` datetime DEFAULT NULL,
`Updated_By` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Sub_Client_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`User_ID`),
KEY `Employee_ID` (`Employee_ID`),
KEY `Role_ID` (`Role_ID`),
KEY `user_ibfk_4_idx` (`Locale_ID`) /*!80000 INVISIBLE */,
KEY `user_ibfk_4_idx1` (`Warehouse_ID`),
KEY `user_ibfk_3_idx` (`Client_ID`),
KEY `user_ibfk_5_idx` (`Sub_Client_ID`),
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`Employee_ID`) REFERENCES `employee` (`Employee_ID`),
CONSTRAINT `user_ibfk_2` FOREIGN KEY (`Role_ID`) REFERENCES `access_list` (`Role_ID`),
CONSTRAINT `user_ibfk_4` FOREIGN KEY (`Locale_ID`) REFERENCES `locale` (`Locale_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
正如你们所见,用户名没有唯一约束,我正在尝试在用户表上添加唯一约束。
ALTER TABLE user
ADD CONSTRAINT Username UNIQUE (Username)
表只有不到10条记录,查询加载时间超长,甚至没有完成。
Mysql 版本是 8.0.33,并且在 RDS 上。我确实尝试过
FOREIGN_KEY_CHECKS
0 和 1。但是,没有运气。
有人有这方面的经验吗?
如果有人遇到此问题,重新启动 RDS 后即可解决问题。