我想补充流动insert
:Mysql的添加NULL来,在插入跳过的cols和山坳是唯一
INSERT INTO `user`
(`name`, `family`, `status`, `mobile`, `ip`, `lastIp`, `seenTime`, `createTime`, `updateTime`)
VALUES
('Mehdi Abbasi', NULL, 4, '989197659980', '149.154.167.210', '149.154.167.210', 1507650436, 1507650436, 1507650436)
而且在数据库中,我有这样的:
家庭的空值保存为null
在数据库中,没有任何问题,但跳过的列,如email
由NULL
填充,当试图添加另一个用户时,发送电子邮件得到重复k来自数据库的错误。
注:
这个问题很奇怪,因为它在过去有效。
表模式是:
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`password` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`passwordResetToken` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL,
`family` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`mobile` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`status` smallint(1) NOT NULL DEFAULT '1',
`ip` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`lastIp` varchar(15) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`seenTime` int(20) DEFAULT NULL,
`updateTime` int(20) DEFAULT NULL,
`createTime` int(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Indexes for table `user`
--
ALTER TABLE `user`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `email` (`email`),
ADD UNIQUE KEY `mobile` (`mobile`),
ADD UNIQUE KEY `passwordResetToken` (`passwordResetToken`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `user`
--
ALTER TABLE `user`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
例如passwordResetToken
和email
给NULL
但family
没有。 价值在family
列没有问题,但email
使。
请将该表的创建代码添加到问题中。 –
你可以添加表架构吗? –
由于'NULL'不等于或不等于'NULL',所以唯一性约束不适用。 – tadman