miércoles, 19 de diciembre de 2012

phpMyAdmin: activar el diseñador

Ya comentamos en el post sobre instalación de phpMyAdmin que incorporaba una función para diseñar bases de datos y visualizar el modelo entidad relación. Esta opción no se activa por defecto, debemos hacerlo manualmente. Para ello iremos al archivo de configuración config.inc.php y añadimos las siguientes líneas (no olvidéis hacer una copia del archivo antes de editarlo para poder restaurarlo en caso de que aparezcan errores en el proceso ;-):

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';

 
 
Ahora crearemos una base de datos llamada phpmyadmin



Una vez creada debemos ejecutar el siguiente script (podéis copiarlo en un archivo de texto con extensión .sql e importarlo desde phpMyAdmin o copiarlo directamente en la consulta SQL). Si lo preferís podéis descargarlo desde este enlace: http://www.alcasoft.es/index.php/descargas/summary/3-publico/2-script-para-activr-el-disenador-de-phpmyadmin




DROP DATABASE IF EXISTS `phpmyadmin`;
CREATE DATABASE `phpmyadmin`;
USE phpmyadmin;


GRANT SELECT, INSERT, DELETE, UPDATE ON `phpmyadmin`.* TO
    'pma'@localhost;



CREATE TABLE `pma_bookmark` (
  `id` int(11) NOT NULL auto_increment,
  `dbase` varchar(255) NOT NULL default '',
  `user` varchar(255) NOT NULL default '',
  `label` varchar(255) NOT NULL default '',
  `query` text NOT NULL,
  PRIMARY KEY  (`id`)
);


CREATE TABLE `pma_column_info` (
  `id` int(5) unsigned NOT NULL auto_increment,
  `db_name` varchar(64) NOT NULL default '',
  `table_name` varchar(64) NOT NULL default '',
  `column_name` varchar(64) NOT NULL default '',
  `comment` varchar(255) NOT NULL default '',
  `mimetype` varchar(255) NOT NULL default '',
  `transformation` varchar(255) NOT NULL default '',
  `transformation_options` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
);

CREATE TABLE `pma_history` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `username` varchar(64) NOT NULL default '',
  `db` varchar(64) NOT NULL default '',
  `table` varchar(64) NOT NULL default '',
  `timevalue` time NOT NULL,
  `sqlquery` text NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `username` (`username`,`db`,`table`,`timevalue`)
);

CREATE TABLE `pma_pdf_pages` (
  `db_name` varchar(64) NOT NULL default '',
  `page_nr` int(10) unsigned NOT NULL auto_increment,
  `page_descr` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`page_nr`),
  KEY `db_name` (`db_name`)
);

CREATE TABLE `pma_relation` (
  `master_db` varchar(64) NOT NULL default '',
  `master_table` varchar(64) NOT NULL default '',
  `master_field` varchar(64) NOT NULL default '',
  `foreign_db` varchar(64) NOT NULL default '',
  `foreign_table` varchar(64) NOT NULL default '',
  `foreign_field` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`master_db`,`master_table`,`master_field`),
  KEY `foreign_field` (`foreign_db`,`foreign_table`)
);

CREATE TABLE `pma_table_coords` (
  `db_name` varchar(64) NOT NULL default '',
  `table_name` varchar(64) NOT NULL default '',
  `pdf_page_number` int(11) NOT NULL default '0',
  `x` float unsigned NOT NULL default '0',
  `y` float unsigned NOT NULL default '0',
  PRIMARY KEY  (`db_name`,`table_name`,`pdf_page_number`)
);

CREATE TABLE `pma_table_info` (
  `db_name` varchar(64) NOT NULL default '',
  `table_name` varchar(64) NOT NULL default '',
  `display_field` varchar(64) NOT NULL default '',
  PRIMARY KEY  (`db_name`,`table_name`)
);

CREATE TABLE `pma_designer_coords` (
  `db_name` varchar(64) NOT NULL default '',
  `table_name` varchar(64) NOT NULL default '',
  `x` INT(11) default NULL,
  `y` INT(11) default NULL,
  `v` TINYINT(4) default NULL,
  `h` TINYINT(4) default NULL,
  PRIMARY KEY (`db_name`,`table_name`)
                                                   );
Ahora cerramos sesión en phpMyAdmin, volvermos a entrar y al seleccionar una base de datos tendremos una nueva pestaña con el menú del diseñador:
 
 Es un diseñador muy sencillito pero útil (cuando trabajéis con aplicaciones basadas en bases de datos complejas agradeceréis tener el mapa de la base de datos al lado para diseñar las consultas).


8 comentarios:

  1. hola saludos,,, en que parte del codigo del archivo hay que ingresar el codigo que tu indicas??

    ResponderEliminar
  2. Hola Marvin. Yo suelo ingresarlo justo al final del archivo config.inc.php (antes del cierre ?>, lógicamente). Un saludo

    ResponderEliminar
  3. Excelente, muchas gracias por esas buenisimas instrucciones, me salvaste la vida ^^

    ResponderEliminar
  4. me aparece un error cuando ingreso la consulta

    ResponderEliminar
  5. Error
    consulta SQL: Documentación

    GRANT SELECT ,
    INSERT ,

    DELETE ,
    UPDATE ON `phpmyadmin` . * TO 'pma'@localhost;


    MySQL ha dicho: Documentación

    #1133 - Can't find any matching row in the user table

    ResponderEliminar
    Respuestas
    1. Hola Carluis. ¿Qué versión de PHPMyAdmin y MySQL estás usando? Un saludo

      Eliminar
    2. Otra cosa, ¿entras como root a MySQL? Todo lo que he leído acerca de ese error se debe a problemas de privilegios, parece que no encuentra al usuario pma en la tabla users. Prueba a hacer un flush privileges y lanza de nuevo la consulta si eres root. Un saludo

      Eliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

Recomendaciones de Alcasoft