我正在编写一个将新记录插入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?
答案 0 :(得分:3)
您的密钥是主密钥,但未设置为自动增量。 请改变你的表格
ALTER TABLE `charlist` CHANGE `id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
答案 1 :(得分:1)
因为id
列未标记为默认为auto_increment
。