因卸载Seafile引发的尴尬

前几天用Seafile搭建私有云时,一不小心吧程序安装在root目录中,导致Nginx死活403 Forbidden,不得已只能删了重装。

先用rm -rf命令顺利删掉了Seafile的目录,之后就是删除Seafile在MySQL中创建的三个数据库了:ccnet-dbseafile-dbseahub-db。由于以前经常把WordPress折腾到重装,所以删除数据库的命令我还是记得很清楚的,不就是drop database database_name;吗,于是我在命令行中输入drop database ccnet-db;,结果……

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘-db’ at line 1

What?难道新版改了语法?

TL;DR 太长不看(我真的没有注意到后面的提示’-db’,还以为真的是我的语句打错了。首先我检查的是后面的分号是不是打成了中文的“;”,很显然不是,我把成功执行过的sql语句中的分号直接复制下来,结果还是报错。难道是语句前面部分要大写?我试了DROP DATABASE ccnet-db;,依然不行。难道是因为这个数据库特殊了,设定了什么不能删除的东西?不可能,明明报的是语法错误啊。百思不得其解,然后我就去找度娘了,还去了Seafile的官方社区,都没有什么线索,场面一度陷入僵局,我甚至想装一个phpmyadmin了。

我仔细看了一下错误提示,好像就是这个”-db”的锅,我猜测这个是MySQL的保留字段,所以整个数据库的名字应该用引号包起来:drop database "ccnet-db";,结果不行。那单引号呢,也不行。最后还是上百度查了一下,原来MySQL还真的有保留字,解决方法就是……用单引号括起来?不,那不是单引号,是“`”这个字符,就是键盘数字1左边的那个键。好吧,问题就这么解决了,感觉自己宛如一个智障……

我以前也删过Seafile的数据库,真的是一切正常啊,这个“-db”肯定是新加的保留字……我不得不吐槽一下Seafile了,你说你加个-db干嘛呢,你这放在数据库里的东西,谁不知道这是个数据库,偏要后面加个-db,有必要吗?重装时询问创建数据库名字时,我默默地把“-db”全都删掉了。

事情远远没有结束。我查了一下“`”这个键,又发现了一些奇妙的东西。这个符号叫重音符或抑音符,是一个变音符号,用于希腊语(1982年前)、法语、加泰罗尼亚语以及一些其他语言内。重音符在编程方面有独立的用途,通常被码农称为反引号。参见维基百科:重音符。然后让我很气的是,中文下,这个键可以输入间隔号“·”!我能说我以前一直都用输入法打间隔号吗?

输入间隔号

之后,我把键盘上所有的符号键都试了,发现数字6那个键,就是英文下能打出乘方的“^”,中文下竟打出了省略号……即“Shift+6”。好吧,6个点,数字“6”键,真的好有道理!

你们不要说我水,最起码我打省略号都用的输入法这种高级方式,省略号打六个句点的大有人在,我就不信没人中枪。