复制文件后MySQL表不存在

复制文件后MySQL表不存在,mysql,linux,Mysql,Linux,我已将我的数据库文件夹从windows系统C:/wamp/bin/mysql/mysql.XX/data/database\u name复制到linux系统/var/lib/mysql/database\u name 我通过终端连接到mysql,执行查询显示表;它显示数据库中的所有TEBLE,但当我执行select*from table_name或desc table_name时,它显示错误1146 42S02:table'database_name.table_name'不存在 有人知道吗?使

我已将我的数据库文件夹从windows系统C:/wamp/bin/mysql/mysql.XX/data/database\u name复制到linux系统/var/lib/mysql/database\u name

我通过终端连接到mysql,执行查询显示表;它显示数据库中的所有TEBLE,但当我执行select*from table_name或desc table_name时,它显示错误1146 42S02:table'database_name.table_name'不存在

有人知道吗?

使用mysqldump复制数据库,不要复制二进制数据文件

手动复制二进制文件时,某些内部数据可能不一致,例如,某些事务可能无法完成

另外,若您将数据文件移动到不同的mysql版本/存储引擎版本,则该引擎可能无法读取新/旧版本格式的文件

此外,系统编码可能不同,因此内部数据表示可能不同,并且在Windows和Linux上完全不兼容。

使用mysqldump复制数据库,不要复制二进制数据文件

手动复制二进制文件时,某些内部数据可能不一致,例如,某些事务可能无法完成

另外,若您将数据文件移动到不同的mysql版本/存储引擎版本,则该引擎可能无法读取新/旧版本格式的文件


此外,系统编码可能不同,因此内部数据表示可能不同,并且在Windows和Linux上完全不兼容。

我也遇到了同样的问题,通过将ibdata1从备份复制到/var/lib/mysql解决了这个问题


我试图恢复整个数据库,不知道只有一个表会发生什么。

我遇到了同样的问题,通过将ibdata1从备份复制到/var/lib/mysql解决了这个问题


我试图恢复整个数据库,不知道只有一个表会发生什么。

文件应该在系统之间兼容,但Linux区分大小写,而Windows不区分大小写。所有文件都用小写字母命名;MysqlDB格式可能因windows和linux而异,因此在linux系统中的/etc/my.conf处添加lower_case_table_names=0属性,以便它能够正常接受您的查询。文件应在系统之间兼容,但linux区分大小写,但windows不区分大小写。所有文件均以小写字母命名;MysqlDB格式可能因windows和linux而异,因此在linux系统中的/etc/my.conf处将属性添加为lower_case_table_names=0,以便它能够正常接受您的查询。这不是正确答案,以防我的mysql服务器崩溃。。我只有文件,我怎么能???如果你的服务器崩溃了,在我根本不相信的情况下,在完全相同的操作系统上用完全相同的存储引擎设置完全相同的服务器版本,并执行mysqlcheck commant。不要在不同的操作系统上移动二进制数据,并询问它为什么不起作用。这个答案对@user1516873似乎有点不公平,他提供了一个合适的替代方法,而你在OP中没有提到任何关于原始主机不可恢复的内容。构建一个虚拟机并使用mysqldump。这不是一个答案,以防我的mysql服务器崩溃。。我只有文件,我怎么能???如果你的服务器崩溃了,在我根本不相信的情况下,在完全相同的操作系统上用完全相同的存储引擎设置完全相同的服务器版本,并执行mysqlcheck commant。不要在不同的操作系统上移动二进制数据,并询问它为什么不起作用。这个答案对@user1516873似乎有点不公平,他提供了一个合适的替代方法,而您在OP中没有提到任何关于原始主机不可恢复的内容。构建一个VM并使用mysqldump。我的解决方法只是在短时间内用备份的文件替换原始文件,运行mysqladmin,转储我需要的表,然后再次还原原始文件。记住在覆盖它之前备份它。注意,我在每台服务器上使用了完全相同的MySQL版本。我的解决方法是用备份的文件短时间替换原始文件,运行mysqladmin,转储我需要的表,然后再次还原原始文件。记住在覆盖它之前备份它。注意,我在每台服务器上使用了完全相同的MySQL版本。