Archivos de Categoría: SGBD

Evitar temporalmente el error MySQL “Cannot delete or update a parent row: a foreign key constraint fails”

mysql> SET foreign_key_checks = 0;
mysql> DROP table ...;
mysql> SET foreign_key_checks = 1;

Ref: http://stackoverflow.com/questions/2300396/force-drop-mysql-bypassing-foreign-key-constraint

Solucionar “Configuration of pmadb… not OK” en phpMyAdmin

Puede que te aparezca este error en pmpMyAdmin:

phpmyadmin-pmadb

Para solucionarlo hay que importar/crear la base de daots phpmyadmin y sus tablas. Un script SQL llamado create_tables.sql debería existir en la carpeta scripts, examples o sql de tu instalación de phpMyAdmin.

mysql -u root -p < create_tables.sql

Crea un usuario llamado pma y dale permisos para la base de datos phpmyadmin:

CREATE USER 'pma'@'localhost' IDENTIFIED BY 'pmapass';
GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'pma'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ahora hay que editar el fichero config.inc.php y configurar/descomentar estas líneas:

/*
 * phpMyAdmin configuration storage settings.
 */

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

/* Storage database and tables */
$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]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Para finalizar cierra la sesión y vuelve a entrar en phpMyAdmin.

Ref: http://stackoverflow.com/questions/21033059/pma-database-not-ok-in-phpmyadmin-upgrade
https://wiki.phpmyadmin.net/pma/Configuration_storage

Doctrine ORM: Excepción “Duplicate entry ‘2147483647’”

Estaba guardando IDs de perfiles de Facebook y Twitter cuando me apareció este error:

  [Doctrine\DBAL\Driver\PDOException]
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147
  483647' for key 'PRIMARY'

  [PDOException]
  SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147
  483647' for key 'PRIMARY'

Volví a mirar los datos de IDs que tenía y ninguno tenía el valor 2147483647. Entonces me dí cuenta de que el valor 2147483647 es el máximo valor que se puede guardar con un tipo de dato integer en Doctrine con MySQL. Así que con tan solo cambiar integer por bigint en la entidad se resolvió el problema.

class TwitterProfile
{
    /**
     * @ORM\Id
     * @ORM\Column(type="bigint")
     */
    protected $id;
    ...
}

doctrine-mysql-duplicate-entry-2147483647

Solucionar “Class ‘PMA_Message’ not found” en phpMyAdmin con nginx + PHP_FPM

Después de actualizar phpMyAdmin me apareció este error:

PHP message: PHP Fatal error:  Class 'PMA_Message' not found in /usr/share/phpMyAdmin/libraries/Message.class.php on line 649" while reading upstream, client: xxx.xxx.xxx.xxx, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "myweb.com"
2014/12/20 18:05:28 [error] 27827#0: *30369 FastCGI sent in stderr: "PHP message: PHP Notice:  Undefined property: PMA_Error::$hash in /usr/share/phpMyAdmin/libraries/Error.class.php on line 169
PHP message: PHP Notice:  Undefined property: PMA_Error::$isDisplayed in /usr/share/phpMyAdmin/libraries/Message.class.php on line 724
PHP message: PHP Notice:  Undefined property: PMA_Error::$params in /usr/share/phpMyAdmin/libraries/Message.class.php on line 538

El problema era que el grupo propietario de /var/lib/php/session se había modificado y ya no era nginx. Este comando solucionó el problema:

# chown root:nginx /var/lib/php/session

PhpMyAdmin-Logo

Ref: http://incredimike.com/2011/04/phpmyadmin-installation-errors/

MySQL no arranca después de actualizar de la versión 5.1 a la 5.5

Después de actualizar un servidor de MySQL de la versión 5.1.73 a la 5.5.4 dejó de arrancar. Para ver qué es lo que estaba pasando miré los logs:

# tail /var/log/mysql.log
141221 13:23:41  InnoDB: Waiting for the background threads to start
141221 13:23:42 InnoDB: 5.5.41 started; log sequence number 1589339
141221 13:23:42 [ERROR] /usr/libexec/mysqld: unknown variable 'record_buffer=1M'
141221 13:23:42 [ERROR] Aborting

Era obvio que muchas cosas habían cambiado desde la versión 5.1 a la 5.5 y en este caso la razón del problema es que la opción record_buffer ha sido eliminada y ahora se llama read_buffer_size. Cambiar el nombre de dicha opción en /etc/my.cnf solucionó el problema.

mysql