Guardar y cargar datos en la tabla opciones de WordPress

Si usas WordPress como desarrollador sabrás que hay varias formas de almacenar datos sobre su base de datos sin necesidad de crear nuevas tablas. Hoy os voy a explicar una de ellas. Aparte de esta que voy a explicaros, existen básicamente dos más:

  • Para guardar tipos de datos (menos usuarios) y sus metadatos (o atributos)
  • Para guardar datos de usuarios y sus metadatos

Estructura

Esta en concreto usa la tabla opciones, wp_options o prefijo_options y para entender cómo usar las funciones y el objetivo de la misma, lo mejor es ver su forma. Esta tabla tiene la siguiente estructura:

  • option_id: su clave primaria
  • option_name: nombre de la opción
  • option_value: valor de la opción
  • option_autoload: indica si debe cargarse o no de primeras

Como veis, tenemos la estructura típica de las tablas hash: clave / valor con: option_name / option_value tan de moda ahora en bases de datos no relacionales y tan útiles. read more

Leer más » 1 Comentario

Error en MySQL: Can’t create table ‘xxx’ (errno: 150)

Soy de los que piensa que MySQL (o MariaDB si queréis algo no dependiente de Oracle) es una gran base de datos incluso para desarrollos serios y lo pongo en negrita porque todavía hoy me encuentro con muchos que defienden alternativas como Oracle DB o PostgreSQL para aplicaciones más complejas y MySQL para aplicaciones más sencillas. read more

Leer más » 3 Comentarios

Ordenando consultas con valores NULL en MySQL

MySQL logoCuando trabajamos con bases de datos, normalmente tendremos casos en los que existan valores nulos tanto en nuestras tablas como en el resultado de nuestras consultas. Sin embargo, esta realidad, también provoca que algunas acciones como las ordenaciones sean problemáticas. Para poder superar estas dificultades disponemos de funciones como coalesce() (buscad dentro del enlace).

La función coalesce()

¿Qué hace esta función? Recibe una serie de parámetros y devuelve el primero que no es nulo. read more

Leer más » 3 Comentarios

Listar todas las tablas de una base de datos en MySQL

Siempre que trabajamos con MySQL o con cualquier otro sistema gestor de bases de datos relacional tenemos la costumbre de hacer operaciones sobre las tablas y no sobre las bases de datos en sí. Básicamente lo único que hacemos es:

 USE mi_base_de_datos

O con el lenguaje que estemos usando la elegimos y trabajamos sobre ella o como mucho haciendo consultas entre varias bases de datos.

Logo MySQL

Sin embargo, hoy trabajando en un proyecto que estoy haciendo para un cliente de CODECTION, he tenido la necesidad de listar y operar sobre los nombres de las tablas de una base de datos. ¿Cómo lo he hecho? read more

Leer más » 14 Comentarios

¿Qué motor de base de datos de MySQL está usando una tabla?

MySQL es un sistema gestor de base de datos con mejores o peores consideraciones. Como punto positivo, está la posibilidad de usar más de un motor de base de datos. Básicamente dos son los más conocidos: MyISAM e InnoDB.

¿Cómo saber desde la consola de MySQL esta información? Con la siguiente orden, fijaos que el DESCRIBE TABLE no ofrece esta información, sólo la información referente al tipo de dato de cada columna, así que tenemos que usar:

SHOW TABLE STATUS WHERE Name = 'nombre_tabla'

Leer más » 1 Comentario

Guardar procedimientos, funciones y triggers en MySQL al hacer un dump

Si sois de los que aprovecháis las nuevas funcionalidades de MySQL como yo y dentro de vuestra base de datos usáis: stored procedures, functios o los famosos triggers (disparadores), os habréis dado cuenta que en vuestro dump, es decir en vuestras copias de seguridad, éstos no aparecen si los hacéis de la forma típica.

Yo me di cuenta de la mala forma, es decir, cuando recuperas el dump y te das cuenta de que no están en ningún sitio. Por eso mismo os traigo esta entrada, para que no os pase y tengáis en cuenta que si usáis este tipo de cosas, quizás debáis reformar la forma en la que llamáis a mysqldump.

Por defecto y por fortuna los triggers sí son guardados por defecto por mysqldump. Para añadir procedimientos y funciones, las llamadas rutinas, deberemos añadir el parámetro –routines, veamos:

Leer más » 2 Comentarios

Abrir acceso a MySQL desde equipos externos

Cuando trabajamos con MySQL es muy frecuente que tengamos que acceder al servidor para realizar desde equipos cliente operaciones con el mismo. Una solución muy frecuente en el mundo de la web, es ahorrarnos abrir conexiones y trabajar directamente desde dicho equipo, ¿cómo? Usando un software que se instale en el equipo servidor de base de datos y permita a la vez interactuar contra él mediante un interfaz web. Hablo de phpMyAdmin.

Sin embargo, en ocasiones, preferimos directamente conectarnos al servidor. Yo personalmente lo hago porque prefiero usar SQLyog Community sobre Wine antes que phpMyAdmin. ¿Cómo lo hacemos? Veamos:

Bind address

Lo primero es buscar en el fichero de configuración de MySQL y modificar la línea siguiente:

bind-address = 127.0.0.1

Por esta otra:

bind-address = TU_IP

Si indicamos 0.0.0.0 estamos dejando conectarnos desde cualquier dirección.

Dar permisos a nuestro usuario

La segunda parte viene derivada de dar permisos a nuestro usuario. ¿Cómo? Desde la consola de MySQL:

GRANT ALL PRIVILEGES
ON base_datos.*
TO ‘usuario’@'tu_IP'
IDENTIFIED BY 'tu_password';
Leer más » 1 Comentario

Duplicar una base de datos MySQL

Cuando estamos trabajando con datos, la mayor parte de las veces tendremos versiones que por unas razones u otras no queramos usar para pruebas. Debemos ser precavidos y tratar de evitar a toda costa de asumir riesgos en temas como éste en los que es muy fácil cubrirse las espaldas.

Una de las mejores formas de hacerlo es duplicando la estructura y los datos de una base de datos, de forma que en lugar de trabajar con la base de datos original, trabajemos con la copia hasta que estemos seguro de que todo marcha perfectamente.

MySQL Logo - Duplicar base de datos

¿Cómo copiar una base de datos en un sistema gestor de bases de datos MySQL? Aquí está el proceso:

Leer más » 4 Comentarios

¿Dónde almacena los datos MySQL?

Seguro que muchos de vosotros habréis oído hablar de MySQL e incluso otros muchos lo habréis llegado a manejar. MySQL es una base de datos relacional, en la que almacenamos datos que luego manejamos usando sentencias SQL.

MySQL logo

Sin embargo, esos datos tienen que guardarse en algún sitio. El lugar suele ser: /var/lib/mysql pero para asegurarnos, debemos mirar el fichero my.cnf. Este fichero se encuentra en:

  • Ubuntu, Debian y derivados: /etc/mysql/my.cnf
  • Red Hat, Fedora y derivados: /etc/my.cnf

Allí podemos ver el valor de datadir. La forma concreta en que se almacenan los datos dependerá del motor de almacenamiento que uses: MyISAM, InnoDB, etc.

Leer más » 7 Comentarios

PostgreSQL no arranca: “Fatal: bogus data in lock file ‘postmaster.pid'”

A raíz de un problema en la consistencia del sistema de ficheros de un servidor virtual que ejecuta PostgreSQL, he tenido que ejecutar un fsck. Tras recuperar la consistencia todos los servicios han salido andando sin problema menos el de PostgreSQL.

PostgreSQL logo

Intentaba arrancarlo con:

service postgresql start

Y nada de nada, siempre aparecía el mensaje de “FALLÓ”. Me dirigí a los logs de arranque en mi caso se encuentran en: /var/lib/pgsql dentro del fichero pgstartup.log. Tras hacerle un tail compruebo que aparece el siguiente error en el arranque:

Leer más » 4 Comentarios