3ENGINE

Programación y otros cachivaches

Archivo

Página 11/104

Tecnologia

MySQL: Error Code: 2006 – Mysql Server Has Gone Away


Al ejecutar un script SQL muy grande MySQL puede devolver un Error Code: 2006 – Mysql Server Has Gone Away. o bien un Error Code: 1153 Got a packet bigger than ‘max_allowed_packet’ bytes

Esto pasa especialmente al intentar restaurar copias de seguridad generadas con mysqldump.
Por defecto esta herramienta genera copias de seguridad que permite restaurar la base de datos. Genera un script que incluye las sentencias de creación de las tablas y las sentencias inserts para cada una de los registros que forman parte de las mismas.

Al tener que procesar un script SQL muy grande es conveniente restaurar desde terminal:

mysql --user=usuario --password=password < archivo.sql

O bien ya dentro del terminal MySQL:
mysql -u=root [-p=password]
mysql> create database mi_base_de_datos;
mysql> use mi_base_de_datos;
mysql> source archivo.sql;

Para solucionar el error debemos modificar el fichero de configuración de MySQL y aumentar el tamaño del parámetro max_allowed_packet (el tamaño máximo es de 1000MB):
max_allowed_packet=16M

En sistemas Linux el fichero de configuración se encuentra en /etc/my.cnf. Sino está ahí utiliza el comando locate my.cnf. En Windows el fichero se llama my.ini. Para averiguar donde se encuentra abrir un terminal y escribir services.msc:
> services.msc

Ya dentro del terminal buscar el servicio de MySQL (MySQL56) click al botón derecho del ratón y seleccionar propiedades. En el campo Ruta de acceso al ejecutable tenemos la ruta al fichero de configuración:

Error Code: 2006 - Mysql Server Has Gone Away

Si utilizamos XAMPP. Click en botón Config para acceder al fichero de configuración:

Error Code: 2006 - Mysql Server Has Gone Away




Tecnologia

MySQL: Error 1064 – You have an error in your SQL syntax … near ‘TYPE=MyISAM’


Al ejecutar el siguiente script para crear una tabla en un MySQL 5.6:

CREATE TABLE my_table(
id INT(11) NOT NULL AUTO_INCREMENT ,
name VARCHAR(60) NOT NULL DEFAULT '',
PRIMARY KEY (id),
KEY id(id)
) TYPE=MYISAM;

MySQL retorna un error 1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE=MyISAM’.

El problema está en TYPE=MYISAM; porque TYPE quedó desfasada a partir de MySQL 4.0 y se eliminó definitivamente en MySQL 5.5. Para que funcione hay que sustituir TYPE por ENGINE.

CREATE TABLE my_table(
id INT(11) NOT NULL AUTO_INCREMENT ,
name VARCHAR(60) NOT NULL DEFAULT '',
PRIMARY KEY (id),
KEY id(id)
) ENGINE=MYISAM;



Tecnologia

XAMPP: Error «Port 80 in use by «Unable to open process» with PID 4!»


Corregir el error «Port 80 in use by «Unable to open process» with PID 4!»

Si con XAMPP al intentar arrancar Apache te da un error Port 80 in use by «Unable to open process» with PID 4!:

Port 80 in use by 'Unable to open process' with PID 4!

Puedes encontrar en el foro de XAMPP un hilo con distintas soluciones muy bien detalladas al problema de Port 80 in use by «Unable to open process» with PID 4!

Si tienes IIS en el mismo PC posiblemente el origen del problema es que los puertos que necesita apache para funcionar ya están ocupados por IIS. En un entorno de desarrollo, una solución rápida es parar IIS y arrancarlo de nuevo cuando ya no necesites apache:

Parar IIS:

 > iisreset /STOP

Arrancar de nuevo IIS:
 > iisreset /START

Ahora, ya podemos arrancar Apache sin problemas :

Port 80 in use by 'Unable to open process' with PID 4!




Tecnologia

Utilizar markdown en modulos Pypi


Es posible que una vez subido un módulo Python a Python Package Index notes que la descripción del módulo (README) que aparece en la página PyPi no esté bien formateada.

Si formateaste la descripción del módulo con Markdown, caso bastante probable si tienes las fuentes en Github, tienes que saber que PyPi únicamente acepta reStructuredTxt como formato de descripción.

Las solución drástica es cambiar la descripción al formato aceptado por PyPi. O bien puedes traducir «on fly» de un formato a otro en setup.py.

Para hacer esto, primero instala pandoc. Se trata de una utilidad que es capaz de convertir ficheros de un lenguaje de marcado a otro.

$ sudo apt-get install pandoc

Después instala el módulo Python pyandoc:

$ sudo pip install pyandoc

Por último modifica setup.py:

long_description = ''

try:
    import subprocess
    import pandoc

    process = subprocess.Popen(
        ['which pandoc'],
        shell=True,
        stdout=subprocess.PIPE,
        universal_newlines=True
    )

    pandoc_path = process.communicate()[0]
    pandoc_path = pandoc_path.strip('\n')

    pandoc.core.PANDOC_PATH = pandoc_path

    doc = pandoc.Document()
    doc.markdown = open('README.md').read()

    long_description = doc.rst

except:
    pass
   
setup(
    long_description=long_description  
    # y tus parámetros de configuración....
)

Las líneas de la 6 a la 16 averigua la ruta donde se encuentra pandoc instalado mediante una llamada al sistema del comando which. Un try/catch es necesario para garantizar la instalación del módulo mediante python setup.py install en un sistema sin pandoc instalado.