Buscando campos entre todas las bases de datos de MySQL-MariaDB

Posted by in MariaDB, MySQL

Justo esta mañana he tenido un problema con #MySQL y obtenía un error un tanto “extraño”, no por que saliera un error, sino porque el campo que daba el error no me resultaba conocido. En concreto, he creado un procedimiento para realizar tablas de referencas cruzadas, y al ejecutar me saltaba un error:

Error 1364 de campo sin valor por defecto

Error 1364 de campo sin valor por defecto

El caso es que comprobaba las bases de datos con las que trabajaba y … no encontraba ningún campo “comment” por ninguna parte. Así que, aprovechando de una consulta de Common_schema, decidí crearme esta pequeña utilidad, para localizar todas las tablas de todas las bases de datos que tengan algún campo llamarse de una determinada manera.

CREATE DEFINER=`root`@`localhost` PROCEDURE `TablasConCampo`(IN `campo` VARCHAR(50))
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
SELECT
TABLE_SCHEMA,
TABLE_NAME,
COLUMN_NAME,
COLUMN_TYPE,
CHARACTER_SET_NAME,
COLLATION_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME like campo;
END

Probamos el procedimiento para buscar dónde tenemos campos “comment”, y encontramos los siguientes:

TablasConCampo

TablasConCampo

Por lo tanto, alguno de estos campos debe ser el causante del error. Cómo estoy trabajando con un procedimiento almacenado, pruebo a modificar el valor por defecto de “mysql.proc“, simplemente permitiendo NULL.

ALTER TABLE `proc` CHANGE COLUMN `comment` `comment` TEXT NULL COLLATE 'utf8_bin' AFTER `sql_mode`;
Gracias a este procedimiento, que espero os resulte de utilidad, he podido resolver mi problema, y continuar!

Google+ Comments - Comentarios Google+