我在MySQL中有一个表,其中有几列指定了默认值,但是当我尝试插入一行时(不指定这些默认列的值),它会抛出一个错误,说我无法插入NULL值.
这是表格示例;
CREATE TABLE `users` (
`Id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`UniqueName` varchar(120) NOT NULL,
`Password` varchar(1000) NOT NULL,
`PublicFlag` tinyint(1) NOT NULL,
`NoTimesLoggedIn` int(10) unsigned NOT NULL DEFAULT '0',
`DateTimeLastLogin` timestamp NOT NULL DEFAULT '1971-01-01 00:00:00',
`UserStatusTypeId` int(10) unsigned NOT NULL,
`Private` tinyint(1) NOT NULL DEFAULT '0',
`SiteName` varchar(255) NOT NULL,
`CountryId` int(10) NOT NULL DEFAULT '0',
`TimeZoneId` varchar(255) NOT NULL DEFAULT 'UTC',
`CultureInfoId` int(10) unsigned NOT NULL DEFAULT '0',
`DateCreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`UserCreated` int(10) unsigned NOT NULL,
`LastUpdatedBy` int(10) unsigned NOT NULL,
`DateLastUpdated` datetime DEFAULT NULL,
PRIMARY KEY (`Id`),
UNIQUE KEY `UniqueName_UNIQUE` (`UniqueName`),
KEY `Index 3` (`SiteName`)
)
Run Code Online (Sandbox Code Playgroud)
它抱怨TimeZoneId,当我填充TimeZoneId时,它抱怨了CultureInforId.
我正在使用MySQL版本:5.1.43-community
这是我试图插入的插入查询,从NHibernate Profiler抓取:
INSERT INTO Users
(UniqueName,
Password,
PublicFlag,
NoTimesLoggedIn,
DateTimeLastLogin,
SiteName,
TimeZoneId,
DateCreated,
DateLastUpdated,
Private,
CountryId,
CultureInfoId,
UserCreated,
LastUpdatedBy,
UserStatusTypeId)
VALUES ('zma@zm.com','u1uhbQviLp89P9b3EnuN/Prvo3A4KVSiUa0=',1,
0,'1/01/1971 12:00:00 AM','V9O1T80Q6D',NULL,'2/08/2010 2:13:44 AM',
'2/08/2010 2:13:44 AM',0, NULL, NULL, 4, 4,31)
Run Code Online (Sandbox Code Playgroud)
Bil*_*win 38
请改用DEFAULT关键字:
INSERT INTO users (TimeZoneId) VALUES (DEFAULT);
Run Code Online (Sandbox Code Playgroud)
不要插入NULL值.我假设你正在尝试这种语法:
INSERT INTO users VALUES (null, 'Jones', 'yarg', 1, null, null, null);
Run Code Online (Sandbox Code Playgroud)
相反,请使用以下语法:
INSERT INTO users SET UniqueName='Jones', Password='yarg';
Run Code Online (Sandbox Code Playgroud)
您在尝试INSERT NULL的字段上设置了"NOT NULL".
例如.CountryId,CultureInfoId,TimeZoneId
执行以下操作:
ALTER TABLE `users` MODIFY `CountryId` int(10) DEFAULT '0' NULL;
ALTER TABLE `users` MODIFY `CultureInfoId` int(10) unsigned DEFAULT '0' NULL;
ALTER TABLE `users` MODIFY `TimeZoneId` varchar(255) DEFAULT 'UTC' NULL;
Run Code Online (Sandbox Code Playgroud)
编辑:没有意识到他想要"null"插入默认值而不是NULL.基本上已经建议使用DEFAULT关键字代替值上的NULL.
或者将NULL字段和值完全保留,mysql将使用定义的默认值,例如.
INSERT INTO Users
(UniqueName,
Password,
PublicFlag,
NoTimesLoggedIn,
DateTimeLastLogin,
SiteName,
DateCreated,
DateLastUpdated,
Private,
UserCreated,
LastUpdatedBy,
UserStatusTypeId)
VALUES ('zma@zm.com','u1uhbQviLp89P9b3EnuN/Prvo3A4KVSiUa0=',1,
0,'1/01/1971 12:00:00 AM','V9O1T80Q6D','2/08/2010 2:13:44 AM',
'2/08/2010 2:13:44 AM',0, 4, 4,31)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57089 次 |
| 最近记录: |