Pregunta

Estoy tratando de ejecutar una secuencia de comandos de gran tamaño que se crea una tabla, y luego inserta casi 15.000 filas en ella. La tabla se crea muy bien, y luego en el 833 INSERT, me sale un error:

Error: Query was empty (1065)

Esta es mi sentencia INSERT 833a (el que está fallando):

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL);

No puedo ver los errores de sintaxis o diferencias entre esta línea, y uno que funcione. Como referencia, aquí es un ejemplo de una instrucción INSERT que funciona bien:

INSERT INTO CLASSCODE (CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT) VALUES (10425, "Frame Shop - Picture/Posters                      - 10425", 2, "Retail", "AZ", 19980801, NULL);

La parte que me intriga es que suena el error como algo que ocurriría si estaba poblando la nueva fila con datos de otra instrucción SELECT, que venía con las manos vacías. Ese no es el caso, sin embargo, como mis instrucciones INSERT están utilizando los datos estáticos.

Mi definición de la tabla es el siguiente:

CREATE TABLE CLASSCODE (
      CLASS_CODE INTEGER NOT NULL, 
      CLASS_CODE_NAME VARCHAR(60) NOT NULL, 
      RATE_GROUP SMALLINT NOT NULL, 
      PROGRAM_NM VARCHAR(20) NOT NULL, 
      ST_CODE CHAR(2), 
      EFF_DT DATE, 
      EXP_DT DATE) 

Me postulo este script en el navegador de interfaz gráfica de usuario de MySQL Query.

Podría ser algo que ver con el número de filas que estoy tratando de insertar? ¿Es necesario para cometer periódicamente? ¿Hay algo simple que sólo estoy pasando por alto?

Gracias!

¿Fue útil?

Solución

Yo sugeriría que ejecuta el SQL desde la línea de comandos en una sesión de terminal o SSH. La interfaz gráfica de usuario puede ser interferir con o limitar su capacidad de ejecutar el gran número de inserciones.

Otros consejos

El escenario más común encontrarse estos en un archivo de secuencia de comandos es cuando se tiene un doble punto y coma en alguna parte:

INSERT INTO CLASSCODE 
(CLASS_CODE, CLASS_CODE_NAME, RATE_GROUP, PROGRAM_NM, ST_CODE, EFF_DT, EXP_DT)
VALUES
(10255, "Funeral Directors - incl PL other than Crematory  - 10255", 3, "Service", "AZ", 19980801, NULL)
;;

Me gustaría hacer una búsqueda rápida a través de la secuencia de comandos y ver si hay una ;; allí alrededor de la línea 833.

Dado que los otros insertos están funcionando bien y no parece haber una diferencia en la estructura de ellos, lo primero que pensé es que se está acabando de algún recurso en el número 833 de inserción.

¿Qué ocurre si una confirmación después de cada inserción (el búfer de transacciones puede estar quedándose sin espacio)? Cómo funciona entonces? En realidad, una prueba mejor sería una única confirmación al número de transacción 800. Si a continuación, ir más allá de 833, entonces eso era su problema.

Si es así, basta con modificar la secuencia de comandos (o la secuencia de comandos que crea su identificador de secuencia de comandos que es auto-generada) para cometer cada 100 o más inserciones (cometer después de cada inserción es probable que sea insoportablemente lento).

En caso de que usted está preocupado por su sintaxis de consulta real, que parece estar bien. He creado su mesa y corrió el inserto y funcionó. Cuando se dice que se está ejecutando un script, es lo que acaba de tener un archivo completo de SQL prima que se está ejecutando a través? Las veces que he encontrado el error de tipo "vacío de consultas" antes de haber sido cuando la gente está utilizando JDBC de tipo cosas y tienen su lógica de bucle en mal estado.

Creo que podemos decir con seguridad que no es tan instrucción de inserción particular, que pegó en el, que tiene que ser algo relacionado con el servidor o la sintaxis alrededor de esa consulta en la secuencia de comandos. Las filas se deben conseguir comprometidos automáticamente a menos que haya reconfigurado algo. Usted puede intentar ejecutar "variables muestran;" desde la línea de comandos mysql y añadiendo que aquí. A continuación, podemos echar un vistazo a la configuración y ver si hay algo raro.

¿Usted ha intentado reordenar algunos de sus inserciones en el archivo? Eso al menos decirnos si está fallando en una consulta en particular o un punto particular en el archivo. Intente organizar sus inserciones sólo para ver si todavía falla en aproximadamente 833 o si se produce un error en un lugar diferente. Si se cae en el mismo lugar, suena como una memoria o cosa relacionada con tampón. Si se cambia de lugar cuando se mueve, yo diría que tienes un carácter callejero (a;. O tal vez). Por ahí en algún lugar como @zombat dijo

Espero que ayude. Háganos saber lo que pueda.

Me encontré con el mismo error hoy. Al parecer, cuando yo estaba usando declaraciones preparadas para la DOP:. MySql, la mesa estaba teniendo datos nulos al consultar

he tenido que rectificar todos los datos que faltan de la mesa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top