2010-09-22 29 views
18

Tengo una base de datos mysql que descargué de mi servidor en línea e intento importar en mi mysql local, pero no funciona mostrando este error de sintaxis. No puedo encontrar ningún error en esta consultaError de MySQL UTILIZANDO BTREE

Este es el error:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE, KEY idx_p_id (p_id) USING BTREE, KEY ' at line 27

y este es mi consulta:

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; 
+0

Basta con retirar ‘USO BTREE’ a menos que esté utilizando como declaraciones provistas en este campo se volverá a los valores predeterminados de hash de indexación –

Respuesta

26

su versión del servidor MySQL es mayor y no es compatible con el donde el vertedero fue creado. Intente actualizar su servidor mysql o exportar el volcado utilizando la opción --compatible de mysqldump.

es probable que tenga esto:

mysqldump --compatible=mysql40 ... 

Usted también tiene la opción de importar el volcado a un servidor nuevo que se puede crear a nivel local y re-exportación de allí utilizando la opción comopatible.

También he visto personas buscar y reemplazar cosas en sus archivos de volcado de mysql, pero este es un enfoque desagradable, pero podría funcionar para usted si solo tiene esta incompatibilidad.

también formatee el texto un poco y acepte algunas respuestas si desea que las personas lo ayuden.

6

En la versión que estoy utilizando (5.0.51a), USING BTREEes compatible. Sin embargo, la sintaxis difiere ligeramente: al menos dentro de una declaración CREATE TABLE, la parte USING BTREE debe estar entre el nombre del índice y sus columnas; p.ej.

INDEX ind USING BTREE (col1, col2)

Aunque el manual 5.0 dice la index_type puede llegar antes de o después de las definiciones de columna, esta última no se acepta.

No puedo decir nada sobre el comportamiento en la versión 5.1.

1

En la versión 5.1X puede usar BTREE, pero en versiones anteriores no es posible. BTREE utilizar en versiones anteriores como 5.0x sólo debe establecer el índice y que es imposible tener cualquier option.watch here

Se puede ver lo que está en la versión 5.0x continuación:

MyISAM   =>   BTREE 

InnoDB   =>   BTREE 

MEMORY/HEAP =>   HASH, BTREE 

NDB   =>   BTREE, HASH 
1

La razón de la error es una versión diferente de la base de datos. Diferencia entre MySQL 5.0 y MySQL 5.1

mysql 5,0 -> KEY idx_p_id (p_id) USANDO BTREE,

MySQL 5.1 -> CLAVE idx_p_id USO BTREE (p_id),

+0

MySQL 5.0 y MySQL 5.1 fueron puestos en un orden incorrecto. Por favor corrígelo. – maxmas