Ошибка MySQL ИСПОЛЬЗОВАНИЕ BTREE
У меня есть база данных mysql, которую я загрузил с моего онлайн-сервера и пытаюсь импортировать в локальный mysql, но не работает, показывая эту синтаксическую ошибку. Я не могу найти ошибок в этом запросе
Это ошибка:
1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с "USING BTREE", KEY idx_p_id
(p_id
) ИСПОЛЬЗОВАНИЕ BTREE, KEY 'в строке 27
и это мой запрос:
PRIMARY KEY (`a_id`),
UNIQUE KEY `idx_a_id` (`a_id`) USING BTREE,
KEY `idx_p_id` (`p_id`) USING BTREE,
KEY `idx_m_id` (`m_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
Ответы
Ответ 1
Ваша версия сервера mysql старше и несовместима с той, где создавался дамп.
Попробуйте обновить сервер mysql или экспортировать дамп с помощью опции --compatible
для mysqldump.
Вам, вероятно, понадобится следующее:
mysqldump --compatible=mysql40 ...
У вас также есть возможность импортировать дамп на новый сервер, который можно создать локально и реэкспонировать там с помощью опции comopatible.
Я также видел, как люди искали и заменяли вещи в своих файлах дампа mysql, но это уродливый подход, но может работать для вас, если у вас есть эта несовместимость.
также немного отформатируйте свой текст и примите некоторые ответы, если вы хотите, чтобы люди вам помогли.
Ответ 2
В используемой версии (5.0.51a) поддерживается USING BTREE
. Однако синтаксис немного отличается: по крайней мере, внутри оператора CREATE TABLE
часть USING BTREE
должна находиться между именем индекса и его столбцами; например.
INDEX ind ИСПОЛЬЗОВАНИЕ BTREE (col1, col2)
Хотя руководство 5.0 говорит, что index_type
может появляться до или после определений столбцов, последнее не принимается.
Я ничего не могу сказать о поведении в версии 5.1.
Ответ 3
Вот что я нашел, что помогло: Mysql: ИСПОЛЬЗОВАНИЕ BTREE - Ошибка при сбросе с 5.1 и импорт в 5.0
Ответ 4
Похоже, что ваша проблема может быть связана с ошибкой MYSQL, указанной в следующей ссылке.
http://bugs.mysql.com/bug.php?id=25162
Ответ 5
В версии 5.1X вы можете использовать BTREE, но в более старых версиях это невозможно. для использования BTREE в более старых версиях, таких как 5.0x, вы должны просто установить индекс, и у него нет опции option.watch здесь
Вы можете увидеть, что находится в версии 5.0x ниже:
MyISAM => BTREE
InnoDB => BTREE
MEMORY/HEAP => HASH, BTREE
NDB => BTREE, HASH
Ответ 6
Причиной ошибки является другая версия базы данных.
Разница между mysql 5.0 и mysql 5.1
mysql 5.0 → KEY idx_p_id
(p_id
) ИСПОЛЬЗОВАНИЕ BTREE,
mysql 5.1 → KEY idx_p_id
ИСПОЛЬЗОВАНИЕ BTREE (p_id
),