Подтвердить что ты не робот

Ошибка 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;
4b9b3361

Ответ 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.

Ответ 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),