插入查询mysql错误#1364中的问题

时间:2018-02-19 06:28:41

标签: mysql

我的查询是

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只显示错误代码它并没有给我错误的阐述。任何人都可以帮助我。

6 个答案:

答案 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_cardidflagshistoryshowtimesession_idcard_idcard_mode)价值观 ('1','','ö','12',9410,'256','rw')