‘SQLSTATE[HY000]: General error: 1835 Malformed communication packet’

Este error que suele aparecer si nuestra APP en Laravel, trabaja con Maria DB y no soporta la nueva versión del PHP.

Como es un error de configuración, y las nuevas versiones de PHP, son algo mas dúctiles, con la creación de consultas,  debe bastarnos con modificar nuestro archivo database config, añadiendo esta línea de código:

options => [PDO::ATTR_EMULATE_PREPARES => true]

Ojo, esta solución puede tener inconvenientes, pues lo que estamos haciendo es habilitar el uso de declaraciones preparadas en la caché, lo cual puede no ser siempre conveniente.

Lo que hace esta sentencia es hacer el reemplazo de los parámetros  en la librería PDO, en vez de hacerlo en el servidor y así burla la desactualización, por lo que los errores de sintaxis en el tiempo de preparación de la consulta desaparecen, y se traspasan solo al momento de ejecución.

«Quien va en busca de montañas, no puede detenerse a recoger las piedras del camino»

Error UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe1 in position …….

logo python

 La solución más rápida a este error, es emplear Sublime Text .

Abrimos nuestro archivo con sublime text y en la opción guardar con encoding guardarlo como UTF 8

Existen otras opciones, veamoslas

Codificar al leer el archivo

Hacer el encoding a UTF-8 al hacer el csv_read(), pasando en el parámetro encoding() la codificación que esperamos.

Importar   chardet y  codificar en la lectura del archivo.

import chardet
with open('data/atp-tour/data.csv', 'rb') as f: result = chardet.detect(f.read())
result['encoding']
Output: 'Windows-1252'

Si lanza un warning de LOW MEMORY se deberá principalmente a los tipos de adivinación por columna, están empleando mucha memoria.

Esto sucede en esencia, porque Pandas solo puede determinar qué tipo de dato tiene cada columna, solamente una vez que lee todo el archivo.

Puede ayudar especificar el tipo de archivo, indicándolo en el parámetro dtype , con la sintaxis.

dtype = {'user_id': int}

Esto es solo recomendable, si sabemos que no encontraremos otro tipo de dato en esa columna, si no cumplimos este precepto, complicaremos la situación , porque se bloqueará la carga.

Hay un poco mas sobre esto en este link

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

Puedo absorber tus pecados, pero no vivir tu vida.

Y

TypeError: argument of type ‘NoneType’ is not iterable. Python

logo python

Este error que Python lanza, obedece, según mi experiencia, a casos en que una función con una declaración  condicional (if, else, case, etc) no devuelve un resultado o lo  devuelve vacío.

Si esto sucede, Python devuelve un valor por defecto que es None, el cual no es iterable, por tanto en la próxima iteración lanzara un error.

La solución a esto, es detener la iteración en casos donde pueda haber un valor vacío (por ejemplo utilizando break), o añadiendo acciones (por ejemplo con while), de modo que se solucione o detenga la iteración.

«Puedo absorber tus pecados, pero no vivir tu vida.»

Y

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias

Error EOL while scanning string literal

logo python

Un error común, que suele aparecer cuando comenzamos a trabajar con Python, e incluso si no somos cuidadosos también después es :

EOL while scanning string literal 

Este error se debe a un error en la sintaxis del script que hemos escrito.

Las causas mas comunes en mi caso eran con los saltos de línea o no cerrar una cadena , como en estos ejemplos a continuación

foo = 'texto de ejemplo

df.Shape.value_counts().plot(kind=bar', alpha=0.5)

En ambos casos me he saltado una comilla y al momento de correr mi script obtendré el dichoso error.

De igual modo sucedería, si en  vez de no colocar la comilla, la coloco en la siguiente línea:

 foo = 'texto de ejemplo
'

Cuando escribimos texto y queremos añadir un salto de línea, lo correcto es escapar con la solución que nos ofrece Python \

Foo = ‘mi texto\
en líneas\
diferentes\’

Una buena practica es abrir y cerrar las comillas antes de escribir el script.

Muchos editores de código, incluyen la función de autocompletado, lo cual puede ayudarte mucho a evitar este tipo de errores tan comunes.

«Lo que nos hace llegar mas allá, es la misma curiosidad que tiene el niño que quiere saber, lo que hay dentro del juguete»