Hosting

mysql 8 ERROR 1231 (42000) at line Variable ‘time_zone’

En un mundo perfecto las copias de seguridad nunca darían problemas, pero nuestro mundo no es perfecto. Y menos en el ecosistema MySQL/MariaDb/percona etc…

Al tratar de recuperar la copia de seguridad de una tabla que extrajimos de un backup de una base de datos usando nuestro tip Restaurar una base de datos de un backup completo de MySQL nos encontramos con un terrible error:

mysql 8 ERROR 1231 (42000) at line Variable 'time_zone' can't be set to the value of 'NULL'

Te cuento como lo solucione, y que de paso sirve para comprender otros errores que pueden tener el mismo error, y la misma solución.

Análisis

Lo primero que llama la atención es que nos  esta hablando de una variable de MySQL y no no de un error en la estructura de nuestros datos.

Si acudimos la fuente para ver el tipo de error:

Error number: 1231; Symbol: ER_WRONG_VALUE_FOR_VAR; SQLSTATE: 42000

Message: Variable ‘%s’ can’t be set to the value of ‘%s’

Nos aventuramos a ver el estado de las variables de nuestro servidor MySQL

mysql> SHOW VARIABLES LIKE '%time_zone%';
+------------------+--------+
| Variable_name    | Value  |
+------------------+--------+
| system_time_zone | CET    |
| time_zone        | SYSTEM |
+------------------+--------+
2 rows in set (0,01 sec)

Que raro esta todo bien…

Ah… ahora caigo. Al extraer la tabla, con el tip, no incorporé el seteo o configuración original de my mysqldump, lo cual es importante sobre todo cuando trabajamos con fechas basadas en UTC.

Trabajar con UTC es la mejor manera que conozco de evitar problemas a la hora de programar, sobre todo si trabajas con la posibilidad de distintas zonas horarias, o servidor distintos. A nivel programación controlas la zona que tu quieras

Añadir la configuración del backup al inicio y su recuperación al final el del servidor

Los datos los podemos obtener del fichero dump de la base de datos completa.

# Al inicio 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

##############################
# Nuestros datos de backup de la tabla
##############################


# Al final del archivo
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-03-15 21:20:33

 

Agradecimientos

Como siempre gracias Unsplash y a Yeo Khee por la imagen que sirve de portada, que edite gracias a Canva

Comparte este articulo en

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Youtube – Mod Security en DirectAdmin. Conocerlo y gestionarlo en el panel de control DirectAdmin.

¡Hola a todos! Vamos a sumergirnos en el fascinante mundo de Mod Security y aprender…

3 meses hace

Apertura del canal Youtube, Tecno Boomer, dedicado al mundo del hosting

Ya son muchos años en el sector, muchos años pasando por varios paneles de control,…

3 meses hace

El Uso de la Lista UCEPROTECT en los Niveles 2 y 3: Una Falacia de Causa Cuestionable

La lista UCEPROTECT es una herramienta utilizada por muchos administradores de sistemas y proveedores de…

4 meses hace

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

11 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

1 año hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

1 año hace