我有这张table:
CREATE TABLE `users` (
`id` varchar(36) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'uuid-will-be-generated',
`createdAt` timestamp NOT NULL DEFAULT (now()),
`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
`username` varchar(60) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`email` varchar(256) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`realName` varchar(60) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '',
`password` varchar(256) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'no-password-specified',
`passwordType` enum('bcrypt') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'bcrypt',
`useAsDisplayName` enum('username','email','realName') COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'username',
`admin` tinyint(1) NOT NULL DEFAULT '0',
`developer` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `usernameIndex` (`username`),
UNIQUE KEY `emailIndex` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
如果我更新任何varchar,updatedAt字段也会更新。但是如果我更新一个enum/boolean字段,它就不会更新。我知道如果更新中的数据相同,它就不会更新,但是数据不同,它就不会更新。使用MySQL 8.0.32。
有人有什么想法吗?
1条答案
按热度按时间kmbjn2e31#
原来是我的应用程序,而不是MySQL。我应该在较低的级别检查。