没有比人更高的山

MySQL中drop user if exists功能的实现方法0

在编写可以重复执行的创建数据库的脚本时,我们知道下面语句可以测试数据库是否存在,如果存在的话就删除掉

1
DROP DATABASE IF EXISTS testdb;

但是我们没办法测试用户是否存在,MySQL是没有drop user if exist这样的功能的。详见:http://bugs.mysql.com/bug.php?id=19166

不过有另外一种变通的办法可以实现同样的功能,代码如下:

1
2
3
4
# a way to implement the functionality of 'drop user if exists' which mysql does
# not support for now
GRANT usage ON *.* TO testdb IDENTIFIED BY 'testdb';
DROP user testdb;

在执行grant的时候,如果数据库中不存在这个用户,那么MySQL会创建一个用户,并且赋以usage权限,usage权限等同于“no privileges”,至于为什么会有这个特殊的权限请见http://dev.mysql.com/doc/refman/5.0/en/privileges-provided.html#priv_usage,主要是在修改已有用户的grant option时使用的。

另外,使用MySQL5.0.0时,执行drop user时并不会删除其权限。MySQL5.0.2已经修正了这个问题,删除用户的时候会一并连权限以前删除。详见:http://dev.mysql.com/doc/refman/5.0/en/drop-user.html

VN:F [1.7.5_995]
Rating: 0.0/10 (0 votes cast)
VN:F [1.7.5_995]
Rating: 0 (from 0 votes)

PHP的特点与发展的草根性0

一直以来都有一个疑问,就是为什么PHP的需求这么多?会有这个疑问,是因为我发现有很多可以合作的机会都是基于PHP的,而我对于PHP技术跟本就不了解。最近有个朋友去了一家公司实习,也是做PHP——这个极大的刺激了我,于是我对比了一下我熟悉的各种Web开发框架(包括ASP,ASP.NET,JSP,Ruby on Rails, Django),发现PHP的发展充满了“草根”特性,以至于很多人都忽略了它。

首先,任何一门技术要使用都需要学习,从学习成本上讲,PHP无疑是最小的,我花了半个小时浏览了W3School的PHP教程的基础部分,花了十几分钟看了看PHP如何连接MySQL数据库,就写出了一个简单的有登录、退出功能的网站,当然在写的过程的不断的在查API。想想学习C#、ruby、python、java、vbscript都得花一个星期或者更长的时间的时候,不禁心里想要是一开始就用了PHP该有多好啊。这几个当中,我自己认为学习难度排序是:(括号中的算是一个数量级的,如果JSP再包括struts、hibernate、spring等这些的话,那么Java又比ASP.NET要高上一个数量级了)。(JSP>ASP.NET)>(Python>ruby)>(ASP>PHP)

我们在比较多种技术的时候往往只是很简单的比较其开发难度,而忽视服务器维护难度和成本。试想,企业本身有一个JSF+Hibernate+Spring架构的OA系统,如果开发者或者维护者一旦离职,继任着得如何上得了手?但是如果是PHP就不一样了,看一看语法,马上就可以开始工作了,这也迎合了目前大部分公司的需要。

其次,市场需求直接决定了开发群体的大小,中国互联网最多的需求都是一些很朴实的需求——一个主页、一个简单的办公系统,中小型企业没有能力和意识去发展自身的信息化,往往只需要一个主页和一个简单办公系统而已,而且在非IT中小企业,互联网营销并没有得到管理者的重视,所以IT人员往往处于很低的地位,往往也只有几个人或者根本没有人。这样的需求PHP能很好的满足了,而且简单直接。

再次,运行成本低,自己架设服务器基本只需要电脑费用、电费、网费,托管服务器价格更便宜,一个月几十块钱就行了。而且容量大,普通PC就可以承受一定的并发需求,不需要配置专门的服务器。前面我提到的那个JSF的OA系统部署的时候就需要1G的内存,这个网站是几年前开发的,那时候内存最大还是512M,想想都有点后怕。

正因为上面几个原因,PHP的发展不是大公司的推动(像IBM推SOA),也不是像若干年前的Java(技术比较先进,相比同时期的ASP功能强大得多),它的发展有着很深厚的群众基础,预计未来的几年在中国Web市场上还将有大的需求。

不过,也因为技术的发展,很多很多额外的因素被添加到PHP中,像面向对象、各种各样的框架等,使PHP不可避免的走向复杂,如何保持其草根性、其简洁决定了PHP能走多远。

VN:F [1.7.5_995]
Rating: 0.0/10 (0 votes cast)
VN:F [1.7.5_995]
Rating: 0 (from 0 votes)


Switch to our mobile site