2011-05-25 13 views
6

我使用mysqldump的导出我的数据库,然后我导入到MySQL的我另一台服务器上后不存在。我现在可以看到我所有的表格,如果我做“显示表格”,但我不能从中选择或描述它们中的任何一个。InnoDB表在MySQL存在,但表示,他们复制数据库到新的服务器

ERROR 1146(42S02):表 'mydatabase.user' 不存在

我的表中的所有都是InnoDB的。我看到一个问题,人们不得不在那里他们使用old_passwords,所以我在my.cnf中明确设置为0,我确信所有的MySQL表的密码分别为41个十六进制数字,因为他们应该是新密码。

+0

您确保还原没有错误做?尝试使用单个事务进行还原,事务将在出错时停止。 – Igor 2011-05-25 17:20:34

+0

复制之后它开始工作了一段时间,然后它开始说表格不存在。但我无法创建表格,因为它确实存在... 问题是导入后发生此复制的数据发生了一些更改,所以我需要至少能够访问这些数据。该表的.frm文件与数据库的工作副本完全相同。 – mrgordon 2011-05-25 17:29:31

+0

看来你有一个表结构的问题。无法帮助你。尝试启用日志的新鲜还原,并在日志中发布日志中的任何错误。 – Igor 2011-05-25 17:34:48

回答

7

原因 “节目表”;因为mysqld只会扫描数据库目录中的.frm文件。只要它们存在,它就会看到一个表格定义。

如果导入的数据到MySQL,但此错误消息发生时,我会立刻做的是运行此命令的第一件事:(顺便说一句这是MySQL的45年5月1日,但无论如何,在MySQL 5.x的作品)

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) 

如果你导入数据的服务器说InnoDB被禁用,那么你有一个很大的问题。这里是你应该做的:

1)从新建导入数据库服务器

2)Cleanup InnoDB Setup

3)运行SHOW ENGINES删除所有数据;并确保InnoDB完全可用!

4)重新加载的mysqldump到新导入服务器

试试看!

2

,当我从Windows服务器转变为Linux服务器我有这个问题。 表是文件,windows文件是大小写的,但linux文件区分大小写。

在我aplication,在SQL查询,有时我用大写的表名和小写其他时间,所以,有时我得到同样的结果,你。

0

我的情况是SQLCA.DBParm参数。

我以前SQLCA.DBParm = "Databse = "sle_database.text""但它必须是

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

解释:你要三个字符串组合:

a) Database='    - "Database='" 

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

c) ' - "'" 
相关问题