#1467 - 无法从存储引擎读取自动增量值

时间:2014-11-28 22:55:37

标签: java mysql auto-increment

我试图创建一个新对象并出现此错误:

java.sql.sqlexception无法从存储引擎读取自动增量值

所以我去phpMyAdmin创建那里的对象,同样出现了:

MySQL说:文档

  

1467 - 无法从存储引擎读取自动增量值

然后我点击编辑,它就在那里:

INSERT INTO `reservation`.`room` (`idroom`, `number`, `floor`, `description`, `characteristics`, `cost`, `status`, `type`) VALUES (NULL, '114', '3', 'ss', 'ss', '550.00', 'Available', 'ss')

(idroom应该自动递增。)

我已经阅读了其他帖子,他们说我必须说出来:

ALTER TABLE `table_name`  AUTO_INCREMENT = 1

但我不知道该把它放在哪里。有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

您的INSERT声明错误。由于idroomAUTO_INCREMENT;您不能将它包含在insert命令的列列表中。您的insert语句应如下所示。请注意,我已从插入列列表中删除了idroom列,并且未在值列表中传递NULL

INSERT INTO `reservation`.`room` (`number`, `floor`, `description`, 
`characteristics`, `cost`, `status`, `type`) 
VALUES ('114', '3', 'ss', 'ss', '550.00', 'Available', 'ss')

答案 1 :(得分:0)

我也在努力解决这个问题并进行了搜索,并没有找到任何结果。然后以下为我工作;我想这可能对你的问题有用。 THX。

1st:
-delete (before backup)->all data from your database.
-try to run your Java program again, or any program you want. 
  

如果失败则转到第2步。

2nd: 
- backup all data from your table
- delete table completely 
- create table again; example shown below:  

CREATE TABLE `users` (
    `id` int(6) NOT NULL,
    `f_name` varchar(30) NOT NULL,
    `l_name` varchar(30) NOT NULL,
    `address` varchar(50) DEFAULT NULL,
    `phone_num` varchar(12) DEFAULT NULL,
    `email` varchar(30) DEFAULT NULL
);
ALTER TABLE `users`
ADD PRIMARY KEY (`id`);
AUTO_INCREMENT for table `users`
ALTER TABLE `users`
MODIFY `id` int(6) NOT NULL AUTO_INCREMENT;