2012-01-26 20 views
5

Estoy tratando de cambiar el delimitador de comandos de MySQL para poder crear un procedimiento con varios comandos en él. Sin embargo, el comando delimitador no parece ser reconocido en MySQL 5.1.47. Lo probé en MySQL 5.0.91, y funcionó allí.Error de sintaxis del delimitador MySQL

DELIMITER //; 
DELIMITER ;// 

Estoy tratando de ejecutar esto desde phpmyadmin, en ambas situaciones. Usar 5.0.91 en cambio no es una opción porque necesito usar eventos (CREATE EVENT).

mensaje de 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 'DELIMITER //' at line 1 

¿Hay alguna razón no funciona, o hay una alternativa para lograr la misma cosa (la creación de un procedimiento con varias consultas)?

+0

He leído que 'DELIMITER' no es realmente un comando de MySQL, es un comando del cliente. ¿Esto significa que PHPMyAdmin necesita soportarlo en lugar de MySQL? – Patrickdev

Respuesta

13

DELIMITER no es un comando de MySQL. Es un comando que su cliente MySQL necesita para ser compatible. Estaba ejecutando PHPMyAdmin 2.8.2.4, que no lo soportaba. Cuando actualicé a la versión más nueva, que actualmente es 3.4.9, funcionó bien. Su versión de MySQL no tiene nada que ver con DELIMITER y si es compatible o no.

2

No es necesario delimitar las declaraciones delimitan

DELIMITER // 

procedure here etc 

DELIMITER ; 

exactamente según "Defining Stored Programs" en la documentación de MySQL.

Y si puede controlar las versiones, la última es 5.5.20. ¿Por qué no usar eso?

Editar:

El mensaje de error indica un error en la declaración anterior ... si esto no puede ser parece que la fuerza de este modo

; /* <- force previous statement termination */ DELIMITER // 

procedure here etc 

DELIMITER ; 
+0

No puedo controlar las versiones, simplemente tengo varios entornos que ejecutan versiones diferentes. Además, la sugerencia que publicó no funcionó. El mismo mensaje de error aparece. – Patrickdev

+0

@Patrickdev: el error estará en su declaración anterior, que será sin terminación ... – gbn

+1

He probado esto con solo este comando. No hay una declaración previa. Además, si hubiera un problema de sintaxis, ¿no estaría arrojando un error en otras versiones también? – Patrickdev

Cuestiones relacionadas