martes, 21 de abril de 2020

PHP Mysql PDOException: SQLSTATE[HY000] General error: 1267 Illegal mix of collations

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

Este error se genera por que el resultado del valor de un campo en nuestra base de datos esta en una cotejamiento(collection) diferente al del dato con el cual lo comparamos.


Solución:

Cambiar el tipo de cotejamiento(collecion) de la tabla
En Mysql  utilizando phpmyadmin editamos el campo de la tabla donde tenemos el conflicto y colocamos el valor que deseamos, en mi caso cambio de latin1_swedish_ci  a utf8_general_ci y le das clic en guardar.



Saludos

domingo, 19 de abril de 2020

Moodle Su base de datos tiene tablas utilizando el formato de fichero Antelope Unicode Barracuda


En algunas ocasiones los sistemas de hosting crean las bases de datos con un formato de archivo predeterminado y se nos presenta el siguiente error cuando el instalador revisa los requerimientos de Moodle.







Existen dos soluciones: 

La primera, solicitar al soporte técnico si pueden cambiar las características de configuración y volver a crear o convertir la base de datos ( a veces algo que acaban diciendo que no es posible :S )


La segunda, que resuelve el requerimiento pero a largo plazo no es recomendable.

Modificar el archivo config.php

1. Con un editor abrir el archivo config.php


2. Agregar la codificación actual de la base de datos al $CFG->dboptions, en la opción dbcollation, en mi caso es utf8_unicode_ci


$CFG->dboptions = array (
'dbpersist' => 0,
'dbport' => '',
'dbsocket' => '',

'dbcollation' => 'utf8_unicode_ci',

);


3. Guardar el archivo y recargar la página de validación de requerimientos


La opción debe desaparecer y permitir seguir con la instalación.

Nota Importante: se recomienda que la base de datos sea utf8mb4_unicode_ci para utilizar Moodle al 100%, utilizar una menor reducirá el rendimiento. Está solución solo funciona cuando no existe otra alternativa.

Saludos y éxito