2012年8月 的存档

mysql timestamp 类型自动更新

2012年8月4日 没有评论

mysql创建表时,如果使用timestamp类型没有指定默认值,它会把第一个使用timestamp的字段默认值设定为CURRENT_TIMESTAMP,如果后面还有其他字段使用timestamp,则指定为‘0000-00-00 00:00:00’,同时Extra列中看到on update CURRENT_TIMESTAMP,注意它会在更新操作时会把该字段时间设置为当前时间,即使你更新时没有指定要更新该字段。例子如下:

create table netingcn(id int(11), ts1 timestamp, ts2 timestamp);

desc netingcn;

+-------+-----------+------+-----+---------------------+-----------------------------+
| Field | Type      | Null | Key | Default             | Extra                       |
+-------+-----------+------+-----+---------------------+-----------------------------+
| id    | int(11)   | YES  |     | NULL                |                             |
| ts1   | timestamp | NO   |     | CURRENT_TIMESTAMP   | on update CURRENT_TIMESTAMP |
| ts2   | timestamp | NO   |     | 0000-00-00 00:00:00 |                             |
+-------+-----------+------+-----+---------------------+-----------------------------+

insert into netingcn(id,ts2) values(1,now());

select * from netingcn;

+------+---------------------+---------------------+
| id   | ts1                 | ts2                 |
+------+---------------------+---------------------+
|    1 | 2012-08-04 22:15:20 | 2012-08-04 22:15:20 |
+------+---------------------+---------------------+

update netingcn set ts2 = '2012-08-01' where id = 1;

select * from netingcn;

+------+---------------------+---------------------+
| id   | ts1                 | ts2                 |
+------+---------------------+---------------------+
|    1 | 2012-08-04 22:15:27 | 2012-08-01 00:00:00 |
+------+---------------------+---------------------+

在上述的例子中插入值时没有ts1,故使用当前的系统时间默认值。当使用更新,此处只是更新了ts2字段,但ts1字段值也发生了变化。所以需要注意extra信息中的提示“on update CURRENT_TIMESTAMP”,如果你想使用timestamp类型又不想让该字段存储的值随着更新而自动更新,那就需要创建表是为该类型的字段显示的指定一个默认值,可以使用CURRENT_TIMESTAMP或0000-00-00 00:00:00。例如:

create table netingcn_1(ts1 timestamp default CURRENT_TIMESTAMP, ts2 timestamp default '0000-00-00 00:00:00');

desc netingcn_1;

+-------+-----------+------+-----+---------------------+-------+
| Field | Type      | Null | Key | Default             | Extra |
+-------+-----------+------+-----+---------------------+-------+
| ts1   | timestamp | NO   |     | CURRENT_TIMESTAMP   |       |
| ts2   | timestamp | NO   |     | 0000-00-00 00:00:00 |       |
+-------+-----------+------+-----+---------------------+-------+
分类: MySQL 标签:

mysql 整型的显示宽度

2012年8月4日 没有评论

mysql数据库中对整型分为5个不同的小类型,分别是tinyint、smallint、mediumint、int和bigint,主要区别是数据库存储时使用几个字节,也就是说限定整数的范围,上述类型存储使用的字节为1、2、3、4和8。取值范围可以根据字节数来算出来。注意:它们都可以指定为无符号(大于等于零)的整数。

在使用时候往往在类型后面会用括号指定一个数字,该值的含义是表明显示宽度,对数值的范围是无关的。例如tinyint(1),tinyint(3)存储的数值范围都是-128到127。如果使用了zerofill,在显示的时候才有可能不一样。例如:

create table netingcn_test1(a tinyint(1), b tinyint(2));

insert into netingcn_test1 values(1,1),(100,100);

select * from netingcn_test1;

+------+------+
| a    | b    |
+------+------+
|    1 |    1 |
|  100 |  100 |
+------+------+

上述例子可以看到tinyint(1),tinyint(2)没有任何区别,下面使用zerofill来看看是什么情况:

create table netingcn_test2(a tinyint(1) zerofill, b tinyint(2) zerofill);

insert into netingcn_test2 values(1,1),(100,100);

select a,b,bin(a),bin(b) from netingcn_test2;   
+------+------+---------+---------+
| a    | b    | bin(a)  | bin(b)  |
+------+------+---------+---------+
|    1 |   01 | 1       | 1       |
|  100 |  100 | 1100100 | 1100100 |
+------+------+---------+---------+

可以看到当结果小于显示宽度时,左边用0补齐,当等于或超过显示宽度时正常显示,通过bin函数可以得知数据存储值都是一样的。

分类: MySQL 标签:

jquery无法提交表单

2012年8月4日 3 条评论

form表单提交可以直接使用表单的submit按钮来完成,也可以使用js的方式来提交,只要获取form对象,调用其submit方法即可,往往js的方式可以让提交表单更加灵活。当然使用jquery也可实现提交。如下的代码片段:

<script>
function jsSubmit() {
	var frm = document.getElementById('frm');
	frm.submit();
}

function jquerySubmit() {
	$('#frm').submit();
}
</script>

<form id="frm" action="./formtest.htm" method="get">
Username:<input type="text" name="username" />
<br />
<input type="submit" name="submit" value="提交" />
</form>
<a href="javascript:jsSubmit()">js submit form</a>
<br /><br />
<a href="javascript:jquerySubmit()">jquery submit form</a>

除了使用提交按钮外,普通js和jquery的方式都无法提交表单。多次确认js的代码是没有问题,可就是不工作。问题原因是出现在命名冲突上,就是说,在form表单中不能出现input的name或id属性的值为submit。上述代码的问题就是提交按钮的name的值为submit,所以造成js方式无法提交表单。所以如果要使用js来操作表单,一定要注意命名的问题。

修改linux系统时间

2012年8月3日 没有评论

date命令不仅可以显示系统当前时间,还可以用它来修改系统时间。命令格式为:

date -s 时间字符串

例如只修改系统的日期,不修改时间(时分秒)

date -s 2012-08-02

或只修改时间不修改日期

date -s 10:08:00

当然也可以同时修改日期和时间

date -s "2012-05-18 04:53:00"

注意:由于日期和时间之间有空格,所以必须用引号引起来,否则命令会报错。

上述修改只是修改了linux的系统时间,CMOS中的时间可能还没有改变,所以为了保险,需要使用 clock -w 把当前系统时间写入到CMOS中。

系统时间和CMOS时间的关系。系统时间是由linux操作系统来维护的;CMOS时间是CMOS芯片保存的时间。系统启动时,操作系统将从CMOS读出时间记录为系统时间,同时操作系统也会自动每隔一段时间将系统时间写入CMOS中。如果使用date命令修改系统时间后马上重启电脑,操作系统还没有将系统时间同步到CMOS,这样开机后就还是没有修改前的时间了,所以为了保险起见,最还还是手动使用命令 clock 将系统时间同步到CMOS中。

http 405 错误

2012年8月2日 没有评论

在进行ajax调用时,测试js逻辑时把请求地址随便指定为http://www.baidu.com,结果调用没有任何返回,通过查看请求,发现请求的状态码为405。第一次接触到这个,在网上找了一下,原来是大部分的web服务器都不允许静态静态页面响应POST请求,否则就会返回“HTTP/1.1 405 Method not allowed”错误。刚好我的ajax请求方式使用的POST,所有就出错,也就没有任何返回信息。

yslow无法正常工作

2012年8月2日 1 条评论

Yslow是yahoo开发的一个firefox插件,用于页面的性能分析,提供一些优化意见,帮助优化页面。其中还有一项功能我很喜欢,就是能把页面的所有js都显示出来,而且是美化的。因为现在很多网站都是使用压缩后的js,而且一个页面加载几个到十几个,如果逐个去分析确实是一件难事,当使用Yslow把所有的js都显示一个页面后,可以通过查找方式快速来获取有用的信息。

Yslow一直都是配合这firebug插件一起使用的,这段时间换了系统,只装了最新的Firefox和firebug插件,刚好遇到一个问题,需要分析页面的js,就想到Yslow,安装一切顺利,但是重启浏览器后,firebug里面没有出现Yslow,折腾好久也没有搞定,开始还以为是mac系统下不能正常功能,然后在虚拟机的win xp安装最新的Firefox、firebug及yslow,结果一样不能工作。

只好求助google,一顿狂搜,终于在mozilla官网上找到了结果,原来是由于firebug跟Yslow不兼容造成的,链接地址:http://mozilla.com.cn/post/16305/。经过测试firebug 1.7.3以上的版本都不能使用Yslow,1.7.3还能正常使用,不过firefox 14下这个版本firebug似乎有些功能又不能用。所以为了使用Yslow只能下载一个低版本的firebug凑合,使用完了再升级firebug。希望它们早日解决兼容性问题。

mac下iphone备份文件夹路径

2012年8月2日 没有评论

使用itunes跟iphone同步时,每次都会创建一个备份文件,mac下备份文件存放的路径为:

~/Library/Application Support/MobileSync/Backup

同样对iphone进行固件升级时,升级文件存放的路径为:

~/Library/iTunes/iPhone Software Updates

前往该目录的方式为:打开finder,在菜单中选择“前往” –> “前往文件夹”,在出来提示框中输入上述地址即可。快捷键为:command + shift + G。

无觅相关文章插件,快速提升流量