El mensaje de error que me dieron fuedatos truncados para la columna 'url' en la fila 1 - Error con la programación con Python Django
Traceback (most recent call last):
File "./test.py", line 416, in <module>
startup()
File "./test.py", line 275, in startup
writer.save(r,data)
File "/home/user/project/test/output.py", line 91, in save
self.save_doc(r, data, pid)
File "/home/user/project/test/output.py", line 130, in save_doc
cursor.execute(dbquery)
File "/usr/local/lib/python2.6/site-packages/django/db/backends/util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 86, in execute
return self.cursor.execute(query, args)
File "/usr/local/lib/python2.6/site-packages/MySQL_python-1.2.3c1-py2.6-linux-x86_64.egg/MySQLdb/cursors.py", line 175, in execute
File "/usr/local/lib/python2.6/site-packages/MySQL_python-1.2.3c1-py2.6-linux-x86_64.egg/MySQLdb/cursors.py", line 89, in _warning_check
_mysql_exceptions.Warning: Data truncated for column 'url' at row 1
Lo primero que me iba a registrar es si la cadena URL es más larga que la longitud del campo , pero en realidad es mucho más corto. diseño de base
+----------+-------------------------------------------------------------------+
| Database | Create Database |
+----------+-------------------------------------------------------------------+
| myurlcol | CREATE DATABASE `myurlcol` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------------+
Diseño Tabla
CREATE TABLE `document` (
`id` int(11) NOT NULL auto_increment,
`url` varchar(255) collate utf8_bin NOT NULL,
`md5` varchar(32) collate utf8_bin NOT NULL,
`host` varchar(255) collate utf8_bin default NULL,
`content_sha1` varchar(40) collate utf8_bin NOT NULL,
`add_date` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
UNIQUE KEY `md5` (`md5`),
KEY `main_crawl_document_content_sha1` (`content_sha1`),
KEY `main_crawl_document_discover_date` (`add_date`),
KEY `main_crawl_document_host` (`host`),
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
imprimo las las longitudes de los datos que estoy tratando de insertar en la tabla (estoy probando el uso de sólo una URL):
len(url) = 89
len(md5) = 32
len(host) = 20
len(content_sha1) = 40
len(add_date) = 19
Estaba usando un cursor creado por Django.db.connection. Para ser más informativo, me pega el comando completa base de datos de consulta pasé a cursor.execute()
INSERT INTO main_document SET url='ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/0a/39/Arthritis_Res_2000_Jun_5_2%284%29_315-326.tar.gz',md5='b6ba3adde8de87e4dc255092b04d07ea',host='ftp.ncbi.nlm.nih.gov',content_sha1='9aeab4412cc9b1add84a6d2bca574664e193b56e',add_date='2012-05-15 00:00:00';
Lo curioso es que, el comando anterior funciona cuando copio y pegado a la línea de comandos de MySQL. No hay mensajes de error y los datos simplemente se insertaron correctamente.
¿Qué está pasando?
Es una advertencia, no es un error. –
@Secator podría ser una advertencia de MySQL, pero está volviendo como un error de Python. Supongo que no podrías ver eso hasta la edición, lo que aclara. – Jordan
Gracias por dejar comentarios, pero estas son mis preguntas: (1) cómo eliminar estas advertencias. (2) si tengo que guardarlos, cómo ignorarlos y dejar que los datos se escriban en la base de datos. En este momento, los datos no están escritos en la base de datos. – fanchyna