一台 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
Database, Problem
mysql, Problem, rename, upgrade, view
都是真事儿,先介绍现象,后面再说搞笑的原因。由于是搬家,目的地场地环境有一些变化,加上现在的机器上灰尘已经攒了好几年的了,所以每台机器都尽量拆开了、逐个零部件清洁,然后再装好开机检查,这一拆一装问题就来了。
- 一台IBM X3650拆开清理后装好了,接上电,开机没反应,但电源线都正常插着呢。
- 一台HP LH6000,3个电源模块,需要2条电源线,都接上了,开机,发现转几下后自动停机,有点儿带不动或者自检出错的感觉,怀疑是内存的原因(此机原来出现过类似的内存错误)。
- 一台HP LH3000,网线接上了交换机,但不亮,系统中也显示“网线已断开”,但这条网线测了N遍都是通而且很正常的,换别机器的网线仍然如故。
- 防火墙内网、外网、SSN/DMZ的网线都接上了,也都通,可怎么配置就是连不上外网,奇怪啊,搬之前还正常用来着,就改了个互联IP的事嘛。
其实啊,这些活儿虽然很辛苦,还真多亏了这些“奇妙”的故障原因,实乃枯燥工作过程中的小小点缀,我下面要说的原因,你都猜到了么?
- IBM X3650的电源模块的纵切面是长方形的,所以上下颠倒也可以放到槽里,就是卡子卡不紧而已,所以有位哥们儿就顺理成章的上下颠倒的安上了,还抱怨不好卡。我是看到电源上AC灯亮而DC灯不亮发现的,因为电源屁股后面的文字也都是倒的。
- 虽然两条电源线都正确的接在了电源的屁股后面,但由于众台机器都拆去清洗了,地面上遗留的线缆比较多,所以。。。有一根电源线的另外一头不在插座上。同样是检查电源模块上的灯发现的,可怜之前我们插拔cpu/内存板子和调整内存N遍啊。
- HP LH3000原先是用光纤与交换机连接的,搬家之后换用铜缆了,当然光纤网卡和铜缆网卡不是一块,最关键的是,以前我们为了不让数据从铜缆走,把接铜缆的网卡禁用了。所以换铜缆之后(此时还未开机或启动进入桌面),这根线也通线序也没问题,但肯定就是不会亮啊。
- 这个最简单,防火墙和交换机都挨着装在机柜的最上方,而且我们的内网和SSN/DMZ都是连到一个交换机上,联通扯过来的光纤已经被机房管理人员用铜缆跳到了机柜自带交换机(位于机柜最下方)上,离得比较远而且也没有线头再外面露着,所以就用三根短跳线从防火墙接到了我们自带的交换机上,和联通光纤没有任何物理连接,能通才出鬼了。
还有一件我们研究了半天的事情,IBM机架服务器自带滑轨在前方除了有2个圆柱用于对入机架上的方形孔外,前面还有一个向下的小钩子,此时我们已将所有东西都拆了下来运到目的机房准备安装,恰好大家以前接触机架滑轨也少,也巧了机房现有服务器看了个遍滑轨全部都是用螺丝固定的,不像我们这个IBM滑轨只用卡件解决。最致命的是,滑轨前方的小钩比机柜上的方孔要宽,怎么也穿不过去,这样怎么才能把滑轨“钩”在机柜上固定啊?机柜是图腾的,滑轨是IBM的,按说都是符合标准的玩意儿,咋就不“兼容”了呢?研究了半天,一位聪明的小胖子终于发现,通过弹簧把2个圆柱压回去,空出的空间正常卡入机柜竖架,松开手弹簧自然把圆柱弹入机柜竖架上的方孔,这一端就固定完毕。至于那个向下的方形小钩子嘛,是在服务器装上、完全推入滑轨之后,“卡”得一声卡住服务器的,并非是要卡在机柜方孔中。可怜我们怀疑图腾和IBM不兼容老半天,就差打电话到他们公司去问了-_-!。
Related posts
funny
funny, hardware, IBM, install, power, Problem
以前说过Ubuntu升级到hardy之后,php-sybase没了,现在在intrepid里又有了,不过有些变化。
主要的原因好像是支持方式从以前的ctlib变成了dblib,其实是和mssql的支持作在一起了,所以现在没有了sybase_ct.so,并且如果使用了adodb(我新下载的版本是5.07),要修改drivers/adodb-sybase.inc.php的148行,把
return sybase_unbuffered_query($sql,$this->_connectionID);
替换为
return sybase_query($sql,$this->_connectionID);
因为sybase_unbuffered_query只有在使用CT library时才能用。
另外一个小变化就是timestamp读出来以后的值变了,由于sybase内置的timestamp其实是varbinary类型,所以原来使用ctlib的时候读出来就是这样的:000007d001917b36,但现在变成了类似中文字符串的形式,所以也需要转换一下:
if (16 != strlen($ts))
$ts = bin2hex($ts);
Update @ 2009-03-01
还是日期的问题,现在从数据库日期字段里取出来的数据多了个毫秒部分,比如Mar 01 2009 00:24:00:000AM,致命的是这个字符串交给strtotime()函数居然不返回值,把毫秒部分:000去掉就没事了。
Related posts
General
adodb, intrepid, PHP, Problem, sybase, timestamp, Ubuntu
依然是采取从源升级的方式,不过却遇到了依赖性死循环:
fwolf@svr6:~$ sudo apt-get install
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run `apt-get -f install' to correct these.
The following packages have unmet dependencies:
libc6: Depends: findutils (>= 4.4.0-2ubuntu2) but 4.2.28-2 is installed
libc6-dev: Depends: libc6 (= 2.5-0ubuntu14) but 2.8~20080505-0ubuntu7 is installed
libc6-i686: PreDepends: libc6 (= 2.5-0ubuntu14) but 2.8~20080505-0ubuntu7 is installed
E: Unmet dependencies. Try using -f.
使用-f参数也无济于事:
fwolf@svr6:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
findutils libc6-dev libc6-i686
Suggested packages:
mlocate locate slocate glibc-doc manpages-dev
The following packages will be upgraded:
findutils libc6-dev libc6-i686
3 upgraded, 0 newly installed, 0 to remove and 362 not upgraded.
5 not fully installed or removed.
Need to get 0B/5077kB of archives.
After unpacking 1561kB of additional disk space will be used.
Do you want to continue [Y/n]? y
E: Couldn't configure pre-depend libc6 for findutils, probably a dependency cycle.
看到没,libc6依赖findutils 4.4以上,而升级findutils又依赖libc6,所以陷入死循环,可以尝试这样解决,前提是相关的deb包都已经用apt下载到了本地cache里:
fwolf@svr6:~$ cd /var/cache/apt/archives
fwolf@svr6:/var/cache/apt/archives$ sudo dpkg --force-depends --install libc6_2.8~20080505-0ubuntu7_i386.deb findutils_4.4.0-2ubuntu3_i386.deb
强制直接安装这两个冤家包,然后是libc6相关的这两个重要包:
sudo aptitude install libc6-i686 libc6-dev
然后,再进行其它upgrade就都正常了。
参考
coreutils and debianutils dependency cycle on reinstall command
Related posts
Linux
apt, aptitude, dependency, intrepid, libc, Problem, Ubuntu, upgrade
把Ubuntu升级到了7.10 Gutsy,基本顺利,接着得寸进尺,想顺便把compiz启用试试,让我的LeadTek Gforce2 GTS也发一下飙,没想到彻底失败,提示没有Xgl,或者说没有开Composite,天,我这块卡不关掉Composite还无法启动glx呢:
# Add this line in xorg.conf
Section "Extensions"
Option "Composite" "Disable"
EndSection
抱着一线希望鼓捣半天,重启n次之后,放弃,卸载,开始把玩gaim的升级换代产品pidgin,不错的东东,不用开LumaQQ了,问题就是好友太多(尤其是不在线或隐身的)分组、聊天信息都没了,一个人也不认识了。pidgin的新配置记录在~/.purple目录下,原来的~/.gaim下的内容都拷贝过来了,logs和smiles也link到了这个新的目录下。在尝试把这么目录配置到unison同步配置文件当中时,发现刚才不知道折腾啥了,vim出了奇怪的问题:

vim在编辑文件的时候,只要一用方向键,或者是jkhl键移动光标,屏幕内容就向上移动一行,下面多出一个空行,还没等挪动光标到要编辑的位置呢,文件内容已经乱得没法看了。
怀疑是compiz造成的效果,卸载它,未果,重开Xfce Session,也不行,又重启了n回,居然发现了一个让我啼笑皆非的原因。
把鼠标移动到xfce4-terminal窗口的边缘,当鼠标从指针变成其它状态,也就是改变窗口大小的时候,按住鼠标左键,terminal窗口的中央就会显示当前terminal的行、列数,我的大小是78×23,而默认窗口的大小是多少呢?是80×24。再来看vim默认的状态栏,也就是屏幕上显示的最后一行:12,1 Top,前面的数字是当前光标所在位置的行、列号,Top后面还有一空格;再看我那出了问题的terminal窗口,每次移动光标多出来的一行第一个字母都是p,明白了吧,这个p就是Top中的第三个字母,由于屏幕宽度不够,每次vi刷新屏幕显示的时候,一行显示不下,就给挤到第二行了。
terminal窗口宽度至少设置为79,就没有问题了,着实让我弱智了一把。
另外,找到两篇不错的compiz使用方法介绍,对kde或xfce用户尤其有用,英文:
Related posts
Linux
Problem, strange, vim