一台 mysql 5.0 服务器,升级到 5.1 后,发现原来有个 database 名字变成了 #mysql50#t-2008-zbb
,刚开始没在意想直接 RENAME DATABASE
,结果这个语法由于过渡危险已经取消了,改用ALTER DATABASE db_name UPGRADE DATA DIRECTORY NAME,结果执行错误:
mysql> ALTER DATABASE `#mysql50#db_name` UPGRADE DATA DIRECTORY NAME; ERROR 1450 (HY000): Changing schema from '#mysql50#db_name' to 'db_name' is not allowed.
原来这里面还有个 BUG ,刚刚修正过来,发行版中肯定还没有呢。幸好,从中得到了提示,因为 View 的存在导致库无法升级的,删掉所有视图后 UPGRADE 成功:
mysql> ALTER DATABASE `#mysql50#db_name` UPGRADE DATA DIRECTORY NAME; Query OK, 0 rows affected (0.08 sec)
这台服务器还作了双向同步,我还得手工重置同步状态,又是麻烦一连串儿的事情,幸亏这次操作的是测试服务器,下次升级正式服务器之前,记得先把所有 View 删掉,升级完成后再重新创建。
另外 RENAME DATABASE
实在是危险,我执行过程中出错终止了,结果一部分表在新库里、一部分表在旧库中,不小心把未转完的目标库删掉了(不然后面的正常 ALTER DATABASE 无法继续),结果就丢失了这些表的数据。
Related posts
- 升级到8.10 intrepid过程中libc6依赖性死循环问题的解决 (6)
- 机房搬家过程中的几件趣事 (0)
- 忙碌的5月 (8)
- 在无线网络中使用RADIUS服务器+mysql进行用户认证 (0)
- 升级到Ubuntu Intrepid后感觉到的一些变化 (0)