我的查询是
INSERT INTO `session_card` (`flags`, `history`, `showtime`, `session_id`, `card_id`, `card_mode`) VALUES ('', 'ö', '12', 9410, '256', 'rw')
并且表结构是
DROP TABLE IF EXISTS `session_card`;
CREATE TABLE IF NOT EXISTS `session_card` (
`id` int(11) NOT NULL,
`session_id` int(11) DEFAULT NULL,
`card_id` int(100) DEFAULT NULL,
`history` varchar(1000) DEFAULT NULL,
`flags` varchar(255) NOT NULL DEFAULT '',
`showtime` varchar(2000) DEFAULT NULL,
`card_mode` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`),
UNIQUE KEY `session_card_unique_key` (`session_id`,`card_id`,`card_mode`),
KEY `fk` (`session_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
COMMIT;
现在我不明白这里的问题是什么我的phpmyadmin只显示错误代码它并没有给我错误的阐述。任何人都可以帮助我。
答案 0 :(得分:0)
在您的架构中,您已经给出了 id` int(11)NOT NULL ,但在插入数据时,您没有传递任何id值。因为id是一个非空约束,所以你应该传递id的值。
答案 1 :(得分:0)
您需要在AUTO_INCREMENT
列上添加id
,否则每次插入行时都需要手动传递唯一ID。
更改:
CREATE TABLE IF NOT EXISTS `session_card` (
`id` int(11) NOT NULL,
为:
CREATE TABLE IF NOT EXISTS `session_card` (
`id` int(11) NOT NULL AUTO_INCREMENT,
我还建议添加UNSIGNED
,因为ID通常不包含负值。
答案 2 :(得分:0)
将您的ID列修改为AUTO_INCREMENT
标志
ALTER TABLE session_card MODIFY id int NOT NULL AUTO_INCREMENT
在执行上述sql
之前,确保表是空的答案 3 :(得分:0)
如果未将主键ID设置为“自动增量”,则在插入时提供值。 否则,将其设置为AutoIncrement。这是分配值的更好方法。
INSERT INTO `session_card`
(`id`,`flags`, `history`, `showtime`, `session_id`, `card_id`, `card_mode`) VALUES
('1','', 'ö', '12', 9410, '256', 'rw')
答案 4 :(得分:0)
可能是因为条件模式
禁用它:
SET sql_mode = '';
在此尝试之后插入查询。
答案 5 :(得分:0)
请将ID键设为自动增量 喜欢以下。
ALTER TABLE session_card MODIFY id int NOT NULL AUTO_INCREMENT
否则在插入时添加手动ID。喜欢以下。
INSERT INTO session_card
(id
,flags
,history
,showtime
,session_id
,card_id
,card_mode
)价值观
('1','','ö','12',9410,'256','rw')