ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist Carlos Wed, 01/12/2011 - 18:10

Tras hacer una actualización con YUM UPDATE he tenido algunos problemas con una BD MySQL. Concretamente me salía el Error 1146 (42S02): Table 'mysql.servers' doesn't exist cada vez que quería ejecutar el comando flush privileges, o al crear usuarios con PLESK, que supongo que al final debe ejecutar el mismo comando.

El problema lo he solucionado creando la tabla manualmente, que es lo que he podido encontrar buscando información sobre este error:

mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> CREATE TABLE `servers` (
    -> `Server_name` char(64) NOT NULL,
    -> `Host` char(64) NOT NULL,
    -> `Db` char(64) NOT NULL,
    -> `Username` char(64) NOT NULL,
    -> `Password` char(64) NOT NULL,
    -> `Port` int(4) DEFAULT NULL,
    -> `Socket` char(64) DEFAULT NULL,
    -> `Wrapper` char(64) NOT NULL,
    -> `Owner` char(64) NOT NULL,
    -> PRIMARY KEY (`Server_name`)
    -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8
    -> COMMENT='MySQL Foreign Servers table';
Query OK, 0 rows affected (0.04 sec)

De momento funciona bien, ya puedo crear usuarios tranquilamente y ejecutar flush privileges sin problemas, pero no me quedo muy tranquilo, supongo que el problema real es que la actualización no fue del todo bien.

Durante la actualización todo estaba OK, pero me daba un warning sobre un script de update. Yo entendí que me decía que lo había ejecutado, pero podría ser que me faltara por ejecutar este script manualmente? Tengo la versión 5.1 de MySQL sobre un SO Linux CentOS.

Buenas,

Después de una actualización de mysql a una versión superior, ante cualquier problema de creación o alteración de una tabla de sistema (mysql.) puedes hacer lo mismo que has hecho de forma automática ejecutando en linea de comandos la utilidad mysql_upgrade --force. Esta lo que hace es adecuar las tablas de sistema y dejarlas niqueladas para la versión actual: creando tablas y campos faltantes...

Si eso antes de liarla, si la base de datos arranca con algun warning siempre estas a tiempo de hacer un backup lógico o una simple copia de ficheros con la bbd parada antes de liarla más...

Saludos,