首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带连字符的MySQL数据库名

问带连字符的MySQL数据库名
EN

Server Fault用户
提问于 2015-02-26 23:35:50
回答 1查看 2.3K关注 0票数 1

我最近将我的暂存数据库服务器从MySQL 5.0.84升级到5.1.72。升级后,我正在尝试恢复mysqldump。转储中的数据库名是gss-app。但是/var/lib/mysql下的数据库文件夹名变成了gss@022dapp,但是当我使用mysql -u root -p登录到mysql并输入show databases;时,它只将数据库名列为gss-app,我可以使用show tables命令Use Database gss-app并列出表。

Got a packet bigger than --max_allowed_packet size错误导致还原失败。那时,数据库被部分恢复,我利用这个机会将gss@022dapp文件夹重命名为gss-app,并登录到mysql。

它列出了数据库名为@mysql@gss-app,而我无法进入数据库。现在,我再次使用--max_allowed_packet_size=1024M运行数据库还原,我看到gss@022dapp文件夹是在/var/lib/mysql中创建的。

我应该关心/var/lib/mysql中的文件夹名吗?或者在还原时可以使用不同的数据库名称吗?

EN

回答 1

Server Fault用户

发布于 2015-03-13 07:58:28

特别是关于在还原时使用不同名称的问题:使用mysqldump,您可以执行mysqldump databasename或mysqldump --databases databasename。前者不会在其中放一个create db语句,而后者则会。

使用前一条语句创建转储后,只需手动创建一个新db并使用类似于mysql newdbname < dump.sql的内容加载转储。在后一种情况下,您可以打开转储文件并更改名称。

一个侧面,我认为这是不好的设计在MySQL的mysqldump部分有这样的区别,BTW。如果不使用--databases语句进行备份,则必须先创建数据库才能恢复。而且,该数据库可能具有与数据库原来的不同的字符集或排序规则。在我看来,如果您转储一个数据库,它应该包含所有数据和元数据。必须提供--routines和--events的情况也是如此。我可以想象,像--no-routines这样的选项会很方便,但默认情况下不会转储例程?嗯。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/671779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档