Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/12/2008, 00:40
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Error 1265, ¿error de sintaxis?

estoy con kurroman,
creo que el problema es cómo llegan los valores '' para el campo de tipo ENUM
Si lo que quieres es que escriba el valor por defecto, puedes poner para esos campos valores DEFAULT, pero sin comillas. Me explico:
INSERT INTO tabla ('22388',...., DEFAULT, DEFAULT,...)

Piensa que el valor o bien es 'si' o bien es 'no', pero no puede ser '', que no es ni una cosa, ni otra, sino una cadena vacía o texto en blanco. Te da error, porque '' es un valor, pero no está dentro de la lista de posibilidades. De ahí, creo, el problema. Pero mi pregunta sigue siendo la misma, ¿cómo generas ese valor '' para los campos?, ¿ te llega desde un formulario? Tú puedes controlar ese valor mediante programación para que cuando llegue esa cadena vacía, es decir cuando te llegue '', inserte default en esa posición, y si tiene un valor, que inserte ese valor.

En el manual alguien lo explica mejor:
Cita:
Note that in MySQL 5's strict mode, if you declare a column NOT NULL(se refiere a una columna ENUM), you are forced to specify a value for it:

mysql> CREATE TABLE myenum (col ENUM('a', 'b', 'c', 'd') NOT NULL);
Query OK, 0 rows affected (0.06 sec)

mysql> INSERT INTO myenum VALUES (NULL);
ERROR 1048 (23000): Column 'col' cannot be null

mysql> INSERT INTO myenum VALUES ('');
ERROR 1265 (01000): Data truncated for column 'col' at row 1
Aclara más adelante que si quieres usar '' lo puedes definir como valor del ENUM, como te ha aconsejado kurroman, pero no sé si eso es lo que quieres.

Parece ser el SQL strict mode de MySQL 5 "el culpable", pero tendrás que buscar una solución. No sé si cambiarlo sería una buena solución. Quizás con programación podrías resolver el problema. No sé, la verdad, qué sería mejor. Deberíamos saber cómo te llegan esos valores.

Última edición por jurena; 19/12/2008 a las 02:03