我最近把我的临时数据库服务器从MySQL 5.0.84升级到5.1.72。 我正在尝试升级后恢复mysqldump。 转储中的数据库名称是gss-app 。 但是, /var/lib/mysql下的数据库文件夹名称变成了gss@022dapp ,但是当我使用mysql -u root -plogin到mysql并键入show databases; 它仅将数据库名称列为gss-app ,我可以Use Database gss-app并使用show tables命令列出这些表。
还原失败,出现错误获取Got a packet bigger than --max_allowed_packet size 。 那个时候数据库被部分恢复了,我抓住这个机会把gss@022dapp文件夹重命名为gss-app并login到mysql shell。
它列出数据库名称@mysql@gss-app ,我无法进入数据库。 现在我用--max_allowed_packet_size=1024M再次运行数据库恢复,并且我看到gss@022dapp文件夹是在/var/lib/mysql 。
我应该关心/var/lib/mysql的文件夹名称吗? 还是可以在恢复时使用不同的数据库名称?
特别是在恢复时使用不同名称的问题:使用mysqldump,您可以执行mysqldump databasename或mysqldump --databases databasename 。 前者不会在其中create db一个create db语句,后者的确如此。
当你用前面的语句创build转储时,可以手动创build一个新的数据库,并使用类似mysql newdbname < dump.sql加载转储。 在后者的情况下,您可以打开您的转储文件并更改名称。
一个旁注,我认为这是MySQL的mysqldump部分不好的devise有这种差异,顺便说一句。 如果不使用--databases语句进行备份,则必须首先创build数据库,然后才能恢复。 并且该数据库可能与数据库原来的字符集或sorting规则不同。 在我看来,如果你转储一个数据库,它应该包含所有的数据和元数据。 不得不提供程序和--events 。 我可以想象像--no-routines这样的选项可以得心应手,但默认情况下不会倾倒例程? 嗯。