2014-07-22 4 views
1

Я пишу веб-приложение, которое будет вставлять новые записи в таблицу базы данных MySQL. Большая часть информации предоставляется пользователю, за исключением первичного ключа, который я хочу получить, используя Auto_Increment. Когда я запускаю следующий запрос от моего веб-приложения:Почему Auto_Increment возвращает null?

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, если в таблице есть допустимый первичный ключ?

ответ

1

поскольку столбец id не отмечен по умолчанию как auto_increment.

+0

Можно ли выбрать автоинкремент? – Synoon

+0

Просто запустите в sql '' alter table 'charlist' change' id' 'id' INT (11) not null auto_increment;' или просто посмотреть @shahzad answer – ins0

2

Ваш ключ является Первичным ключом, но не установлен как автоматический приращение. Пожалуйста, измените свой стол, как

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

Это замечательно, запрос auto_increment теперь корректно работает на консоли MySQL. У меня проблемы с работой с PHP, хотя я вернусь, если не смогу это понять. – Lou

+0

Хорошо, я не могу понять. Я попытался поместить результат auto_increment в переменную, но когда я повторяю переменную, я снова ничего не получаю. '$ id = $ conn-> query (" SELECT Auto_Increment FROM information_schema.tables WHERE table_name = '$ tablename' ");' – Lou

+0

Не похоже, что там есть опечатка, но я не уверен. – Lou

Смежные вопросы