为什么 Auto_Increment 返回 null?

Lou*_*Lou 2 php mysql sql auto-increment

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

SELECT Auto_Increment FROM information_schema.tables WHERE table_name='charlist';
Run Code Online (Sandbox Code Playgroud)

它不返回任何内容 - 我通过将查询结果存储在变量中然后echo对该变量进行检查,但没有输出任何内容。我还使用 MySQL 控制台运行此查询,它返回以下内容:

+----------------+
| Auto_Increment |
+----------------+
|           NULL |
+----------------+
Run Code Online (Sandbox Code Playgroud)

我的表肯定有主键字段,并且有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    |       |
+----------------+-------------+------+-----+---------+-------+
Run Code Online (Sandbox Code Playgroud)

这是表中已有的 5 条记录的几个字段。

+----+-----------+---------+
| id | forename  | surname |
+----+-----------+---------+
|  1 | Waymar    | Royce   |
|  3 | Mance     | Rayder  |
|  4 | Gared     |         |
|  5 | Tristifer | Mudd    |
|  6 | Edric     | Dayne   |
+----+-----------+---------+
Run Code Online (Sandbox Code Playgroud)

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

小智 5

您的键是主键,但未设置为自动增量。请更改您的表格,例如

ALTER TABLE `charlist`     CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
Run Code Online (Sandbox Code Playgroud)