【问题标题】:#1467 - Failed to read auto-increment value from storage engine#1467 - 无法从存储引擎读取自动增量值
【发布时间】:2015-01-27 14:23:23
【问题描述】:

我试图创建一个新对象,但出现了这个错误:

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

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

【问题讨论】:

    标签: java mysql auto-increment


    【解决方案1】:

    我也为这个问题苦苦挣扎并进行了搜索,但没有找到任何东西。然后以下对我有用;我想它可能对你的问题有用。谢谢。

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

    如果失败则转到第二个。

    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;
    

    【讨论】:

      【解决方案2】:

      您的INSERT 声明是错误的。因为idroomAUTO_INCREMENT;您不得将其包含在插入命令的列列表中。您的插入语句应如下所示。请注意,我已经从插入列列表中删除了 idroom 列,并且在值列表中也没有传递 NULL

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

      【讨论】:

        猜你喜欢
        • 2016-07-01
        • 2013-07-15
        • 2013-07-07
        • 2011-11-12
        • 2014-02-11
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多