Jun4

Where IN查询时的排序问题

经常会有这样的查询: select id FROM table where id in (8,9,6,4) 这样查询的结果排序是按照id的递增排序的:4 6 8 9 如果我想让结果按照IN中的顺序排序可以这样做(mysql): select id FROM table where id in (8,9,6,4) ORDER BY find_in_set(id,’8,9,6,4′) 这篇日志是每日一web-dev tip计划的一部分,如果你关注web开发或者linux,请订阅我的rss。

trackback Tags: 评论

May21

备份MySQL出现Can't open file when using LOCK TABLES错误

最近每日备份MySQL数据库的时候,偶尔会出现: mysqldump: Got error: 1016: Can’t open file: ‘./hitidea/wp_8_wpo_campaign_feed.frm’ (errno: 24) when using LOCK TABLES 这样的错误。 hitidea是一个有很多数据表的数据库(Wordpress MU),搜索了一下,发现只要在mysqldump的时候加上–lock-tables=false就可以解决问题。 mysqldump -u root -ppassword hitidea –lock-tables=false > hitidea.sql 从今天开始,我尝试每日发一个tip,内容是Web开发中遇到的小问题的解决方案,包括但不限于LAMP,Web前端。 这是第一天,希望能坚持下去。 如果你关注web开发或者linux,请订阅我的rss。

trackback Tags: 评论 (5)

Jan8

mysql修改数据目录后起不来了

虚拟机装的是鸟斑图(ubuntu),mysql修改数据目录后就起不来了,apparmor惹的祸: sudo vim /etc/apparmor.d/usr.sbin.mysqld 修改里面相应数据目录的位置以后,重启apparmor即可。 /etc/init.d/apparmor restart

trackback Tags: 评论

Oct23

Nausicaa最近的那点破事

Nausicaa是sharej和hitidea所在的服务器。 上篇日志已经说了,最近服务器很不稳定。起初还怀疑是有人在恶意DDos,后来看了apache的日志也没有发现多少异常请求,spider的频率也比较正常,后来经过追查,发现在挂掉的时候,mysql会出现很多slowquery,之前写mysql的时候,除非是超级明显的效率问题,否则不考虑优化。果然,现在到了该优化的时候了。 mysql优化主要是靠explain mysql语句,找到语句的瓶颈部分,一般来说,有外部排序、使用临时表的语句肯定是需要优化的。优化基本就靠建索引和缩减语句了,把一些操作放在外部程序来做。 经过两天的mysql查询优化和今天加服务器内存,已经连续24小时没有一个slowquery,Nausicaa终于稳定下来了。 PS,昨天给dove装上了deblet(一个能在n800上run的debian版本),相当爽。800px宽的屏幕,做什么都很方便!

trackback Tags: 评论 (5)

Oct15

想把COUNT放到where子句中?

嘿嘿,这就说明你的数据库课没有学好……   错误做法:select * from user_num where count(user)>=2 group by user;   正确做法:select * from user_num group by user HAVING count(user)>=2 ; 用having子句吧!

trackback Tags: 评论 (3)

Jul22

mysql lost connection in wordpress

搬家以后,mysql换成了5.2。但是在发布blog的时候老是出现 mysql lost connection 问了一下服务器的管理员,然后查了一下,发现是超时,而wordpress没有重新连接。加一个函数就好了。在每次query之前检查一下连接状态。 function checkconnection() { $maxcount = 5; $cnt = 1; $ping = mysql_ping( $this->dbh ) ; while( !$ping && $cnt dbh); $this->connecttodb(); $ping = mysql_ping( $this->dbh ) ; if(!$ping ) { sleep(2); } $cnt+=1; } if(!$ping ) { die(“Attempted to connect for ” . $maxcount . ” but failed…”) ; } […]

trackback Tags: 评论 (7)