Winnie
Underconst


Estoy haciendo un script en Perl que tiene que añadir/updatear unos datos en un base de datos de MySQL.
El script es bastante sencillo, ya que sólo trata de parsear unos logs. Sólo estaba teniendo un poco de problema con los comandos MySQL. El primero porque de los logs estaba sacando unas fechas con formato 03/07/2007, cuando MySQL las espera 2007/03/07.
Asà que me pasé la trade del jueves en busca de una función que me cambiara el formato de la fecha... Errónemente me fui hacia DATE_FORMAT y estuve toda la tarde tratando de hacer un insert con date_format.
Alguien de la lista de Badopi me corrigió, y me dijo que me mirara str_to_date, y la cosa mejoró (si es que no hay nada como mirar la función la toca en el momento adecuado!). Asà que emepcé con mis inserciones:
my $insert_start = $dbh->prepare("INSERT INTO job (start_date,user,`group`) VALUES (STR_TO_DATE(?,'%d/%m/%Y'),?,?)")
or die "Cannot prepare: ", $dbh->errstr();
y luego ejecutamos:
$insert_start -> execute ($start_date,$user,$group);
$insert_start -> finish;
Y todo funcionaba perfectamente. Hay que tener en cuenta que en los logs sólo tenÃa una linia (por simplificar).
Asà que con la linia correctamente puesta, cambié el log y puse el de verdad (con varios MB de tamaño).
Entonces el script dejó de funcionar, y porque? por el siguiente error:
DBD::mysql::st execute failed: Column 'start_date' cannot be null at ./parser.pl line 80, line 2.
Y esto repetido N veces..
Me tiré el viernes buscando el puto error, y esta mañana igual... Como puede ser que start_date sea NULL si cuando saco la variable por pantall me dice que ésta vale: 03/22/2007?
Nada, que tras buscar y buscar he caido en el porque del puto error: el formato de la fecha!. En mi str_to_date le digo que le pasaré un fecha con formato dÃa(2 dÃgitos)/mes(2 dÃgitos)/año(4 dÃgitos), y si os fijáis, las fechas que he utilizado están expresadas en mes/dÃa/año, aunque claro, la primera al ser 03/07 daba igual el formato!.
Tonto por mi parte no fijarme más, pero vaya con el error de MySQL, la función esa no podrÃa incorporar un aviso de "Eh! que estyás poniendo mal el formato!"....
Recent comments
6 weeks 3 days ago
39 weeks 6 days ago
44 weeks 3 hours ago
44 weeks 19 hours ago
47 weeks 6 days ago
48 weeks 2 days ago
49 weeks 1 day ago
49 weeks 3 days ago
50 weeks 23 hours ago
50 weeks 4 days ago