2011-05-25 29 views
6

Utilicé mysqldump para exportar mi base de datos y luego la importé a MySQL en mi otro servidor. Ahora puedo ver todas mis tablas si hago "mostrar tablas" pero realmente no puedo seleccionar o describir ninguna de ellas.Existen tablas InnoDB en MySQL pero dice que no existen después de copiar la base de datos al nuevo servidor

ERROR 1146 (42S02): Tabla 'mydatabase.user' no existe

Todos mis cuadros son InnoDB. Vi un problema que tenían las personas cuando usaban old_passwords, así que explícitamente lo establecí en 0 en my.cnf y me aseguré de que todas las contraseñas de la tabla mysql tuvieran 41 dígitos hexadecimales como deberían ser para las nuevas contraseñas.

+0

¿Estas seguro que la restauración se realicen sin errores? Intente realizar la restauración con una sola transacción, la transacción se detendrá con errores. – Igor

+0

Funcionó por un tiempo después de que lo copié y luego comenzó a decir que la tabla no existía. Pero no puedo crear la tabla porque sí existe ... El problema es que hubo algunos cambios en los datos que ocurrieron con esta copia después de la importación, así que necesito poder acceder a ellos al menos. El archivo .frm para esta tabla es exactamente lo mismo que una copia de trabajo de la base de datos. – mrgordon

+0

Parece que tiene problemas con una estructura de tabla. No puedo ayudarte con eso. Pruebe la restauración reciente con el registro habilitado y publique aquí cualquier error del registro. – Igor

Respuesta

7

Motivo "mostrar tablas"; funciona porque mysqld escaneará el directorio de la base de datos solo para archivos .frm. Mientras existan, ve una definición de tabla.

Si ha importado los datos en MySQL y este mensaje de error ocurre, la primera cosa que de inmediato hacer es ejecutar este comando: (Por cierto Este es MySQL 5.1.45, pero funciona en MySQL 5.x de todos modos)

mysql> show engines; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment              | Transactions | XA | Savepoints | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  | YES   | YES | YES  | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | NO   | NO | NO   | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine            | NO   | NO | NO   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | NO   | NO | NO   | 
| FEDERATED | NO  | Federated MySQL storage engine         | NULL   | NULL | NULL  | 
| ARCHIVE | YES  | Archive storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO   | NO | NO   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
8 rows in set (0.00 sec) 

Si el servidor en el que ha importado los datos dice que InnoDB está desactivado, entonces tiene un gran problema. Esto es lo que debe hacer:

1) Pérdida de todos los datos desde el servidor DB Nueva importación

2) Cleanup InnoDB Setup

3) ejecutar SHOW ENGINES; ¡y asegúrese de que InnoDB esté en pleno funcionamiento!

4) Actualizar el mysqldump en el nuevo servidor de importación

darle una oportunidad !!!

2

Tuve este problema cuando cambié de un servidor de Windows a un servidor Linux. Las tablas son archivos y los archivos de Windows son insensibles a las mayúsculas y minúsculas, pero los archivos de Linux distinguen entre mayúsculas y minúsculas.

En mi aplicación, en las consultas sql, algunas veces usé nombres de tablas en mayúsculas y otras veces minúsculas, así que, a veces obtuve el mismo resultado que usted.

0

Yo mi caso era el parámetro SQLCA.DBParm.

que utilizan SQLCA.DBParm = "Databse = "sle_database.text"" pero debe ser

SQLCA.DBParm = "Database='" +sle_database.text+ "'" 

Explicar: se va a combinar tres cadenas:

a) Database='    - "Database='" 

b) (name of the database) - +sle_database.text+ 

c) ' - "'" 
Cuestiones relacionadas