2010-03-24 15 views
7

Si trato de esta declaración:¿Por qué se niegan MySQL tubería ('|') carácter en cadena en INSERT INTO

INSERT INTO TerminalEventChild (id,stringValue) VALUES 
(64,'version123|'); 

MySQL fallar con:

Error: 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 ''version123' at line 1 
SQLState: 42000 
ErrorCode: 1064 

Si quito el | personaje, todo funciona bien. ¿Alguna idea?

+0

Has intentado escapar de | con una barra invertida? – erenon

+0

Sí, y obtuve lo mismo. También intenté doblar la tubería pero con el mismo resultado. –

+0

Esto se aplica a ** SQL Squirrel Client **. Consulte la respuesta a continuación: http://stackoverflow.com/a/7444934/1188357 – Kiril

Respuesta

3

En mi máquina, esto funciona bien:

CREATE TABLE TerminalEventChild (id INT, stringValue VARCHAR(200)); 

INSERT INTO TerminalEventChild (id,stringValue) VALUES 
(64,'version123|'); 

Probablemente, su cliente trata el caracter especial.

¿Qué cliente usas?

+0

Entonces, ¿cuál era el problema? – nos

+0

Bien, acabo de probar con la línea de comandos mysql y funcionó bien. Estoy usando SQuirreLSQL. Voy a consultar con ellos. ¡Gracias! –

+0

También puedo confirmar que esto funciona. Lo intenté usando mysql cli (5.1.42) en una caja Linux. –

17

Encontré la solución en Incorrect query parsing - ID: 3091322.
Squirrel SQL está utilizando el símbolo de tubería como un separador de procedimiento/función, por lo que debe cambiar las preferencias de MySQL para usar otra cosa (por ejemplo, |||).

En la pestaña "Archivo> Preferencias globales> MySQL", en el campo "Separador de procedimientos/funciones", reemplace | con una cadena diferente, por ejemplo |||.

+0

Funcionado en mi caso, el manejo de la tubería Squirrel fue el culpable. – olefebvre

+0

Tuve exactamente el mismo problema gracias @ anne-marie –

+0

Estoy usando ardilla y este también fue mi problema. No sabía que Squirrel usó la tubería para otras cosas. –

Cuestiones relacionadas