2013-10-06 3 views
0

Почему что-то подобное не работает?Ключ 'emp_no' не существует в таблице 'employees'

mysql> SELECT * FROM employees FORCE INDEX(emp_no) WHERE emp_no = '77899'; 

где таблица выглядит следующим образом:

+------------+---------------+------+-----+---------+-------+ 
| Field  | Type   | Null | Key | Default | Extra | 
+------------+---------------+------+-----+---------+-------+ 
| emp_no  | int(11)  | NO | PRI | NULL |  | 
| birth_date | date   | NO |  | NULL |  | 
| first_name | varchar(14) | NO |  | NULL |  | 
| last_name | varchar(16) | NO |  | NULL |  | 
| gender  | enum('M','F') | NO |  | NULL |  | 
| hire_date | date   | NO |  | NULL |  | 
+------------+---------------+------+-----+---------+-------+ 
6 rows in set (0.01 sec) 

ошибка я получаю это:

ERROR 1176 (42000): Key 'emp_no' doesn't exist in table 'employees' 

ответ

0

Просто потому, что emp_no это имя первичного ключа не означает, что это имя индекса.

Для каждого намека требуются имена индексов, а не имена столбцов. Имя ПЕРВИЧНОГО КЛЮЧА ПЕРВИЧНО. Чтобы увидеть имена индексов для таблицы, используйте SHOW INDEX. http://dev.mysql.com/doc/refman/5.1/en/index-hints.html

сделать это вместо того, чтобы

mysql> SELECT * FROM employees FORCE INDEX(PRIMARY) WHERE emp_no = '77899'; 
+0

вы уверены? этот пост предложил бы другое (я думаю): http://stackoverflow.com/questions/1071180/is-the-primary-key-automatically-indexed-in-mysql – BigBug

+1

Из [руководства MySQL] (http: // dev .mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html) (сокращенно): _ Первичный ключ для таблицы ... имеет связанный индекс для быстрой производительности запросов. – jerdiggity

+0

Исправлено, спасибо указывая на мою ошибку. Решение обновлено. –

0

Я думаю, что это жалуется (очень беспомощно), потому что вы делаете индекс силы на то, что это уже показатель. Сделайте SHOW INDEXES FROM <<tablename>>, чтобы быть уверенным. Вам не нужно указывать положение индекса силы.

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