【问题标题】:Why does Auto_Increment return null?为什么 Auto_Increment 返回 null?
【发布时间】:2014-09-13 03:57:16
【问题描述】:

我正在编写一个将新记录插入 MySQL 数据库表的 Web 应用程序。大部分信息是用户提供的,除了我想使用 Auto_Increment 获取的主键。当我从我的 Web 应用程序运行以下查询时:

SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist';

它什么都不返回 - 我通过将查询结果存储在一个变量中然后echoing 该变量进行检查,但没有任何输出。我还使用 MySQL 控制台运行了这个查询,它返回了这个:

+----------------+
| Auto_Increment |
+----------------+
|           NULL |
+----------------+

我的表肯定有主键字段,主键字段填了5条记录。这就是表的结构。

+----------------+-------------+------+-----+---------+-------+
| Field          | Type        | Null | Key | Default | Extra |
+----------------+-------------+------+-----+---------+-------+
| id             | int(11)     | NO   | PRI | NULL    |       |
| bookIntroduced | int(11)     | YES  |     | NULL    |       |
| pageIntroduced | int(11)     | YES  |     | NULL    |       |
| title          | varchar(50) | YES  |     | NULL    |       |
| forename       | varchar(50) | YES  |     | NULL    |       |
| surname        | varchar(50) | YES  |     | NULL    |       |
| oldSurname     | varchar(50) | YES  |     | NULL    |       |
| alias          | varchar(50) | YES  |     | NULL    |       |
| regnalNumber   | varchar(5)  | YES  |     | NULL    |       |
+----------------+-------------+------+-----+---------+-------+

这是表中已经存在的 5 条记录中的几个字段。

+----+-----------+---------+
| id | forename  | surname |
+----+-----------+---------+
|  1 | Waymar    | Royce   |
|  3 | Mance     | Rayder  |
|  4 | Gared     |         |
|  5 | Tristifer | Mudd    |
|  6 | Edric     | Dayne   |
+----+-----------+---------+

那么,当表中存在具有有效主键的记录时,为什么 Auto_Increment 会返回 NULL?

【问题讨论】:

    标签: php mysql sql auto-increment


    【解决方案1】:

    您的键是主键,但未设置为自动增量。 请改变你的表像

    ALTER TABLE `charlist`     CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
    

    【讨论】:

    • 太棒了,auto_increment 查询现在可以在 MySQL 控制台中正常工作。我在让它与 PHP 一起工作时遇到了麻烦,如果我想不通,我会回来。
    • 好吧,我想不通。我试图将 auto_increment 的结果放入一个变量中,但是当我回显该变量时,我又什么也没得到。 $id = $conn->query("SELECT Auto_Increment FROM information_schema.tables WHERE table_name='$tablename'");
    • 那里好像没有错别字,但我不确定。
    【解决方案2】:

    因为id 列未将默认标记为auto_increment

    【讨论】:

    • 是否可以选择自增?
    • 只需在 sql 中运行 alter table `charlist` change `id` `id` INT(11) not null auto_increment; 或查看 @shahzad 答案
    猜你喜欢
    • 2022-12-26
    • 2016-12-28
    • 2015-11-25
    • 2015-07-04
    • 2019-09-29
    • 2015-02-25
    • 2015-10-21
    • 2021-08-12
    • 2011-03-18
    相关资源
    最近更新 更多