Archive for MySQL
MySQL server has gone away的解决办法
发表于 2010-06-27 11:31 : 评论 ( 8 条评论 )
最近做网站有一个站要用到WEB网页采集器功能,当一个PHP脚本在请求URL的时候,可能这个被请求的网页非常慢慢,超过了mysql的 wait-timeout时间,然后当网页内容被抓回来后,准备插入到MySQL的时候,发现MySQL的连接超时关闭了,于是就出现了“MySQL server has gone away”这样的错误提示,解决这个问题,我的经验有以下两点,或许对大家有用处:
第一种方法:
当然是增加你的 wait-timeout值,这个参数是在my.cnf(在Windows下台下面是my.ini)中设置,我的数据库负荷稍微大一点,所以,我设置的值 为10,(这个值的单位是秒,意思是当一个数据库连接在10秒钟内没有任何操作的话,就会强行关闭,我使用的不是永久链接 (mysql_pconnect),用的是mysql_connect,关于这个wait-timeout的效果你可以在MySQL的进程列表中看到 (show processlist) ),你可以把这个wait-timeout设置成更大,比如300秒,呵呵,一般来讲300秒足够用了,其实你也可以不用设置,MySQL默认是8个小 时。情况由你的服务器和站点来定。
DEDEcms使用SQL获得当天已审核的文章总数
发表于 2010-03-5 10:31 : 评论 ( 2 条评论 )
24小时发布的新文章:
86400 是 3600 * 24,就是24小时发布的新文章。
select count(id)+0 as total from dede_archives where UNIX_TIMESTAMP() - pubdate < 86400 and arcrank >0;
任意日期发布的最新文章:
SELECT count(ID) as count from dede_archives where pubdate > UNIX_TIMESTAMP( FROM_UNIXTIME(UNIX_TIMESTAMP(), '%Y-%m-%d 00:00:00')) limit 1;
任意日期审核通过的最新文章
SELECT count(ID) as count from dede_archives where pubdate > UNIX_TIMESTAMP( [...]
修复升级Mysql时的1577错误
发表于 2009-12-26 11:58 : 评论 ( 没有评论 )
环境:Windows,Mysql5.x
理论上Linux下也一样。
错误提示"Please try to update your system table and to see if it solves your problem. mysql_upgrade is stored in the "bin" folder under the MySQL server installation path.";
错误分析:可能是直接复制不同版本之间的MYSQL数据库目录。比如我,备份了低版本的MYSQL数据库DATA到新版的目录下。
错误影响:数据库可以正常使用,但会造成一定的管理错误,如可视化mysql数据库管理工具Navicat for mysql的错误提示。
我是离不开Navicat的,虽不影响使用,但也得解决这个问题。
这个问题已经遇到几次了,不得不写下大篇文档纪念之。
方法很简单,使用mysql/bin目录下的mysql_upgrade.exe进行升级就可以了。
使用方法:
开始->运行->输入cmd回车,在操作提示符下输入
E:\APMServ5.2.6\MySQL5.1\bin\mysql_upgrade -uroot -pPWD
然后回车(将其中的E:\APMserv5.2.6改成你自己实际安装的目录,PWD改成你的密码即可),执行完以后就OK了。
当然,有一些版本的APMServ有精简,可能没有mysql_upgrade.exe和mysqlcheck.exe这两个文件,解决办法也很简单,直接下载一个对应版本的MYSQL免安装版本,将这两个文件复制过去就行了。
FML...
PHP+PDO+MSSQL的灾难。
发表于 2009-09-17 23:15 : 评论 ( 1 条评论 )
PHP6默认就使用PDO进行数据库之间的连接方法了,本来以后可以等PHP6出来再去适应,想不到前天接下的一个项目却让我提前过了一把瘾。
灾难呀。
首先是PDO报错的方法,改成编号了,连接数据库的“数据库密码错误”却变成“8000”的错误代码,一搜,N种错误可能。
再次,我怎么感觉PDO的效率不那么理想,一个IP的连接,一直连接到超时都不报错。
最后,怎么还是感觉自己写的类好用,适应起来还真是别扭。
最后,很痛苦的事情出在PDO+MSSQL的分页上,真是灾难中的灾难。
这次的项目需要将MSSQL中的数据转换到Mysql中,本来想用PDO练练手的,结果却死也找不到PDO+MSSQL的分页类。习惯了到网上找资源、找类库、找函数,一时间找不到前辈们的杰作,真让人惶恐不已。前无古人,这种感觉未必那么有成就感。
MSSQL的分页历来被人诟病,相比之下,我真想说“Mysql,我爱死你了”。
好想发一个表情,结果没有,懒得倒腾了。一一!
MYSQL 数据库函数库备忘
发表于 2009-02-3 20:26 : 评论 ( 3 条评论 )
BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制)
CEILING(x) 返回大于x的最小整数值
EXP(x) 返回值e(自然对数的底)的x次方
FLOOR(x) 返回小于x的最大整数值
GREATEST(x1,x2,...,xn) 返回集合中最大的值
LEAST(x1,x2,...,xn) 返回集合中最小的值
LN(x) 返回x的自然对数
LOG(x,y) 返回x的以y为底的对数
MOD(x,y) 返回x/y的模(余数)
PI() 返回pi的值(圆周率)
RAND() 返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。
ROUND(x,y) 返回参数x的四舍五入的有y位小数的值
SIGN(x) 返回代表数字x的符号的值
SQRT(x) 返回一个数的平方根
TRUNCATE(x,y) 返回数字x截短为y位小数的结果
COUNT(col) 返回指定列中非NULL值的个数
MIN(col) 返回指定列的最小值
[...]
MySQL正则表达式替换,字符替换方法
发表于 2008-08-16 00:18 : 评论 ( 没有评论 )
两句SQL,都是字符替换,比较好用。
update comment set url=IF(url REGEXP 'test.yahoo.com.cn',REPLACE(url,'www1.sohu.com','www.sina.com'),REPLACE(url,'www2.yahoo.com','www.sina.com')) where 1=1;
update comment set author_url=REPLACE(author_url,'sohu','sina') where author_url REGEXP 'www.sohu.com';
DELETE,UPDATE与LEFT JOIN
发表于 2008-07-30 22:18 : 评论 ( 没有评论 )
#UPDATE: UPDATE A SET ApproverID=NULL,ApproveDate=NULL,ApproveResult=100,CheckerID=null,CheckDate=null, IsCheck=0 FROM [SH_MaterialApplyBuyBill] A LEFT JOIN [SH_MaterialApplyBuyBillDetail] B ON A.ID=B.[MaterialApplyBuyBillID] WHERE A.id=125 AND @InDetailCount=0 #DELETE: DELETE A FROM [SH_ClosingBalance] A LEFT JOIN [SH_StoreHouse] B ON A.StoreHouseID=B.ID WHERE B.departmentID='1000' update table1 set a.a=1 from table1 a inner join table2 b on a.ip=b.ip
MySQL中的转义字符列表
发表于 2008-07-16 13:07 : 评论 ( 没有评论 )
MySQL的转义字符“\”
MySQL识别下列转义字符:
\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\'
一个单引号(“'”)符。
\ "
一个双引号(“ "”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
★★
有几种方法在一个字符串内包括引号:
1、必须转义的:
[...]
