为什么Auto_Increment返回null?

时间:2014-07-22 10:59:48

标签: php mysql sql auto-increment

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

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

它什么都不返回 - 我通过将查询结果存储在变量中然后echo该变量来检查,并且没有输出任何内容。我还使用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?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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