<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[博]]></title>
	  <link>http://zzqianger.blog.163.com</link>
	  <description><![CDATA[事繁勿慌,事闲勿荒,取象于钱,外圆内方 酷似敬明的味道,淡淡的喜,淡淡的伤
                     相信奇迹,坚信美好......    
]]></description>
	  <language>zh-CN</language>
	  <pubDate>Sun, 6 Jul 2008 07:52:39 +0800</pubDate>
	  <lastBuildDate>Sun, 6 Jul 2008 07:52:39 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[zzqianger]]></managingEditor>
	  <webMaster><![CDATA[Stone]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[博]]></title>
	  	<url>http://ava.blog.163.com/photo/adIhV-sgsclRJ6Lx5293Rg==/171418260817357715.jpg</url>
	  	<link>http://zzqianger.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[胸有凌云志 ]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200831482543612</link>
    <description><![CDATA[<div><P>&nbsp; 1.随长不满七尺，而雄心万丈。<BR >&nbsp; Seven inches tall though, he has great ambition..<BR ><BR>&nbsp; 2.沧海可填山可移，男儿志气当如斯。<BR >&nbsp; Man shall have an ambition beliving that nothing is insurmountable just like the sea can be filled up and the mountain can be moved.<BR ><BR>&nbsp; 3.胸有凌云志，无高不可攀。<BR >&nbsp; If you cherish soaring aspirations, nothing is unattainable.<BR ><BR>&nbsp; 4.最有效的资本是我们的信誉，它24小时不停为我们工作。<BR >&nbsp; The most effective capital is our credit, which works for us round the clock and never stops.<BR ><BR>&nbsp; 5.顶天立地奇男子，要把乾坤扭转来。<BR >&nbsp; Special and of of indomitable spirit as he is, he is to reverse the course of events.<BR ><BR>&nbsp; 6.销售世界上第一号的产品——不是汽车，而是自己。在你成功地把自己推销给别人之前，你必须百分之百的把自己推销给自己。<BR >&nbsp; The first product you will sell in marketing world isn’t car or others but yourself. Before that you have to convince others with self-promotion by 100%.<BR ><BR>&nbsp; 7.人无志向，像迷途的盲人一样。<BR >&nbsp; He who has no aspiration will be like a stray blindman.&nbsp; <BR ><BR>&nbsp; 8.有志不在年高，无志空活百岁。<BR >&nbsp; It is never too old to be ambitious. It will be worthless even if one is 100 years old without ambition.<BR ><BR>&nbsp; 9.人无大志，枉活一世。<BR >&nbsp; One’s life will be worthless if he is unambitious.<BR ><BR>&nbsp; 10.立志难也，不在胜人，在自胜。<BR >&nbsp; It is very difficult to make resolutions in that it is to overcome ourselves but not others.<BR ><BR>&nbsp; 11.每一个成功者都有一个开始。勇于开始，才能找到成功的路。<BR >&nbsp; Evevry sucessful man has a start. To be brave to start is the only way to be successful.<BR ><BR>&nbsp; 12.世界会向那些有目标和远见的人让路（冯两努——香港著名推销商）<BR >&nbsp; The world will make for those who are goal-directed and far-sighted.<BR ><BR>&nbsp; 13.造物之前，必先造人。<BR >&nbsp; Form men before making things.<BR ><BR>&nbsp; 14.与其临渊羡鱼，不如退而结网。<BR >&nbsp; it's better to go back and make a net than to stand by the pond and long for fish; <BR >&nbsp; one should take practical steps to achieve one's aims;<BR >&nbsp; Dry shoes won’t catch fish.<BR ><BR>&nbsp; 15.若不给自己设限，则人生中就没有限制你发挥的藩篱。<BR >&nbsp; Nobody and nothing can stop your own developing but you.<BR ><BR>&nbsp; 16.赚钱之道很多，但是找不到赚钱的种子，便成不了事业家。<BR >&nbsp; There is a lot of ways to earn money, however, if you cann’t find the correct one, you won’t be an enterpriser. <BR ><BR>&nbsp; 17.蚁穴虽小，溃之千里。<BR >&nbsp; one ant-hole may cause the collapse of a thousand li dike; <BR >&nbsp; slight negligence may lead to great disaster; <BR >&nbsp; a small leak will sink a great ship.<BR ><BR>&nbsp; 18.才自清明，志自高。<BR >&nbsp; Bright as he is with a clear mind, he will be highly aspired<BR ><BR>&nbsp; 19.绊脚石乃是进身之阶。<BR >&nbsp; The stumbling block is everyone’s stepping stone.<BR ><BR>&nbsp; 20.寄言燕雀莫相唣，自有云霄万里高。<BR >&nbsp; Each has his own ideal. </P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200831482543612</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200831482543612</guid>
    <pubDate>Mon, 14 Apr 2008 08:25:43 +0800</pubDate>
    <dcterms:modified>2008-04-14T08:25:43+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[MYSQL出错信息表]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/615270702008219105929911</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">mysql出错了，以前往往靠猜.有了这张表，一查就出来了.方便不少.特共享于众 </P>
<P style="TEXT-INDENT: 2em">1005：创建表失败 </P>
<P style="TEXT-INDENT: 2em">1006：创建数据库失败 </P>
<P style="TEXT-INDENT: 2em">1007：数据库已存在，创建数据库失败 </P>
<P style="TEXT-INDENT: 2em">1008：数据库不存在，删除数据库失败 </P>
<P style="TEXT-INDENT: 2em">1009：不能删除数据库文件导致删除数据库失败 </P>
<P style="TEXT-INDENT: 2em">1010：不能删除数据目录导致删除数据库失败 </P>
<P style="TEXT-INDENT: 2em">1011：删除数据库文件失败 </P>
<P style="TEXT-INDENT: 2em">1012：不能读取系统表中的记录 </P>
<P style="TEXT-INDENT: 2em">1020：记录已被其他用户修改 </P>
<P style="TEXT-INDENT: 2em">1021：硬盘剩余空间不足，请加大硬盘可用空间 </P>
<P style="TEXT-INDENT: 2em">1022：关键字重复，更改记录失败 </P>
<P style="TEXT-INDENT: 2em">1023：关闭时发生错误 </P>
<P style="TEXT-INDENT: 2em">1024：读文件错误 </P>
<P style="TEXT-INDENT: 2em">1025：更改名字时发生错误 </P>
<P style="TEXT-INDENT: 2em">1026：写文件错误 </P>
<P style="TEXT-INDENT: 2em">1032：记录不存在 </P>
<P style="TEXT-INDENT: 2em">1036：数据表是只读的，不能对它进行修改 </P>
<P style="TEXT-INDENT: 2em">1037：系统内存不足，请重启数据库或重启服务器 </P>
<P style="TEXT-INDENT: 2em">1038：用于排序的内存不足，请增大排序缓冲区 </P>
<P style="TEXT-INDENT: 2em">1040：已到达数据库的最大连接数，请加大数据库可用连接数 </P>
<P style="TEXT-INDENT: 2em">1041：系统内存不足 </P>
<P style="TEXT-INDENT: 2em">1042：无效的主机名 </P>
<P style="TEXT-INDENT: 2em">1043：无效连接 </P>
<P style="TEXT-INDENT: 2em">1044：当前用户没有访问数据库的权限 </P>
<P style="TEXT-INDENT: 2em">1045：不能连接数据库，用户名或密码错误 </P>
<P style="TEXT-INDENT: 2em">1048：字段不能为空 </P>
<P style="TEXT-INDENT: 2em">1049：数据库不存在 </P>
<P style="TEXT-INDENT: 2em">1050：数据表已存在 </P>
<P style="TEXT-INDENT: 2em">1051：数据表不存在 </P>
<P style="TEXT-INDENT: 2em">1054：字段不存在 </P>
<P style="TEXT-INDENT: 2em">1065：无效的SQL语句，SQL语句为空 </P>
<P style="TEXT-INDENT: 2em">1081：不能建立Socket连接 </P>
<P style="TEXT-INDENT: 2em">1114：数据表已满，不能容纳任何记录 </P>
<P style="TEXT-INDENT: 2em">1116：打开的数据表太多 </P>
<P style="TEXT-INDENT: 2em">1129：数据库出现异常，请重启数据库 </P>
<P style="TEXT-INDENT: 2em">1130：连接数据库失败，没有连接数据库的权限 </P>
<P style="TEXT-INDENT: 2em">1133：数据库用户不存在 </P>
<P style="TEXT-INDENT: 2em">1141：当前用户无权访问数据库 </P>
<P style="TEXT-INDENT: 2em">1142：当前用户无权访问数据表 </P>
<P style="TEXT-INDENT: 2em">1143：当前用户无权访问数据表中的字段 </P>
<P style="TEXT-INDENT: 2em">1146：数据表不存在 </P>
<P style="TEXT-INDENT: 2em">1147：未定义用户对数据表的访问权限 </P>
<P style="TEXT-INDENT: 2em">1149：SQL语句语法错误 </P>
<P style="TEXT-INDENT: 2em">1158：网络错误，出现读错误，请检查网络连接状况 </P>
<P style="TEXT-INDENT: 2em">1159：网络错误，读超时，请检查网络连接状况 </P>
<P style="TEXT-INDENT: 2em">1160：网络错误，出现写错误，请检查网络连接状况 </P>
<P style="TEXT-INDENT: 2em">1161：网络错误，写超时，请检查网络连接状况 </P>
<P style="TEXT-INDENT: 2em">1062：字段值重复，入库失败 </P>
<P style="TEXT-INDENT: 2em">1169：字段值重复，更新记录失败 </P>
<P style="TEXT-INDENT: 2em">1177：打开数据表失败 </P>
<P style="TEXT-INDENT: 2em">1180：提交事务失败 </P>
<P style="TEXT-INDENT: 2em">1181：回滚事务失败 </P>
<P style="TEXT-INDENT: 2em">1203：当前用户和数据库建立的连接已到达数据库的最大连接数，请增大可用的数据库连接数或重启数据库 </P>
<P style="TEXT-INDENT: 2em">1205：加锁超时 </P>
<P style="TEXT-INDENT: 2em">1211：当前用户没有创建用户的权限 </P>
<P style="TEXT-INDENT: 2em">1216：外键约束检查失败，更新子表记录失败 </P>
<P style="TEXT-INDENT: 2em">1217：外键约束检查失败，删除或修改主表记录失败 </P>
<P style="TEXT-INDENT: 2em">1226：当前用户使用的资源已超过所允许的资源，请重启数据库或重启服务器 </P>
<P style="TEXT-INDENT: 2em">1227：权限不足，您无权进行此操作 </P>
<P style="TEXT-INDENT: 2em">1235：MySQL版本过低，不具有本功能 </P>
<P style="TEXT-INDENT: 2em">第二部分 新4.1.11，摘自DOCSmysqld_error.txt </P>
<P style="TEXT-INDENT: 2em">character-set=utf-8 isher补充 </P>
<P style="TEXT-INDENT: 2em">#define ER_HASHCHK 1000 </P>
<P style="TEXT-INDENT: 2em">"hashchk"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NISAMCHK 1001 </P>
<P style="TEXT-INDENT: 2em">"isamchk"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO 1002 </P>
<P style="TEXT-INDENT: 2em">"NO"， </P>
<P style="TEXT-INDENT: 2em">#define ER_YES 1003 </P>
<P style="TEXT-INDENT: 2em">"YES"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Create_FILE 1004 </P>
<P style="TEXT-INDENT: 2em">"Can't create file '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Create_TABLE 1005 </P>
<P style="TEXT-INDENT: 2em">"Can't create table '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Create_DB 1006 </P>
<P style="TEXT-INDENT: 2em">"Can't create database '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DB_Create_EXISTS 1007 </P>
<P style="TEXT-INDENT: 2em">"Can't create database '%-.64s'; database exists"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DB_Drop_EXISTS 1008 </P>
<P style="TEXT-INDENT: 2em">"Can't drop database '%-.64s'; database doesn't exist"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DB_Drop_Delete 1009 </P>
<P style="TEXT-INDENT: 2em">"Error dropping database (can't delete '%-.64s'， errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DB_Drop_RMDIR 1010 </P>
<P style="TEXT-INDENT: 2em">"Error dropping database (can't rmdir '%-.64s'， errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Delete_FILE 1011 </P>
<P style="TEXT-INDENT: 2em">"Error on delete of '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_FIND_SYSTEM_REC 1012 </P>
<P style="TEXT-INDENT: 2em">"Can't read record in system table"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_GET_STAT 1013 </P>
<P style="TEXT-INDENT: 2em">"Can't get status of '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_GET_WD 1014 </P>
<P style="TEXT-INDENT: 2em">"Can't get working directory (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_LOCK 1015 </P>
<P style="TEXT-INDENT: 2em">"Can't lock file (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_OPEN_FILE 1016 </P>
<P style="TEXT-INDENT: 2em">"Can't open file: '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FILE_NOT_FOUND 1017 </P>
<P style="TEXT-INDENT: 2em">"Can't find file: '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_READ_DIR 1018 </P>
<P style="TEXT-INDENT: 2em">"Can't read dir of '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_SET_WD 1019 </P>
<P style="TEXT-INDENT: 2em">"Can't change dir to '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CHECKREAD 1020 </P>
<P style="TEXT-INDENT: 2em">"Record has changed since last read in table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DISK_FULL 1021 </P>
<P style="TEXT-INDENT: 2em">"Disk full (%s). Waiting for someone to free some space..."， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_KEY 1022 </P>
<P style="TEXT-INDENT: 2em">"Can't write， duplicate key in table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_ON_CLOSE 1023 </P>
<P style="TEXT-INDENT: 2em">"Error on close of '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_ON_READ 1024 </P>
<P style="TEXT-INDENT: 2em">"Error reading file '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_ON_RENAME 1025 </P>
<P style="TEXT-INDENT: 2em">"Error on rename of '%-.64s' to '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_ON_WRITE 1026 </P>
<P style="TEXT-INDENT: 2em">"Error writing file '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FILE_USED 1027 </P>
<P style="TEXT-INDENT: 2em">"'%-.64s' is locked against change"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FILSORT_ABORT 1028 </P>
<P style="TEXT-INDENT: 2em">"So瘀牡?剕 ????o鸞? rt aborted"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FORM_NOT_FOUND 1029 </P>
<P style="TEXT-INDENT: 2em">"View '%-.64s' doesn't exist for '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_GET_ERRNO 1030 </P>
<P style="TEXT-INDENT: 2em">"Got error %d from storage engine"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ILLEGAL_HA 1031 </P>
<P style="TEXT-INDENT: 2em">"Table storage engine for '%-.64s' doesn't have this option"， </P>
<P style="TEXT-INDENT: 2em">#define ER_KEY_NOT_FOUND 1032 </P>
<P style="TEXT-INDENT: 2em">"Can't find record in '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NOT_FORM_FILE 1033 </P>
<P style="TEXT-INDENT: 2em">"Incorrect information in file: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NOT_KEYFILE 1034 </P>
<P style="TEXT-INDENT: 2em">"Incorrect key file for table: '%-.64s'; try to repair it"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OLD_KEYFILE 1035 </P>
<P style="TEXT-INDENT: 2em">"Old key file for table '%-.64s'; repair it!"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OPEN_AS_READONLY 1036 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' is read only"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OUTOFMEMORY 1037 </P>
<P style="TEXT-INDENT: 2em">"Out of memory. Restart daemon and try again (needed %d bytes)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OUT_OF_SORTMEMORY 1038 </P>
<P style="TEXT-INDENT: 2em">"Out of sort memory. Increase daemon sort buffer size"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNEXPECTED_EOF 1039 </P>
<P style="TEXT-INDENT: 2em">"Unexpected eof found when reading file '%-.64s' (errno: %d)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CON_COUNT_ERROR 1040 </P>
<P style="TEXT-INDENT: 2em">"Too many connections"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OUT_OF_RESOURCES 1041 </P>
<P style="TEXT-INDENT: 2em">"Out of memory; Check if mysqld or some other process uses all available memory. If not you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_HOST_ERROR 1042 </P>
<P style="TEXT-INDENT: 2em">"Can't get hostname for your address"， </P>
<P style="TEXT-INDENT: 2em">#define ER_HANDSHAKE_ERROR 1043 </P>
<P style="TEXT-INDENT: 2em">"Bad handshake"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DBACCESS_DENIED_ERROR 1044 </P>
<P style="TEXT-INDENT: 2em">"Access denied for user: '%-.32s'@'%-.64s' to database '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ACCESS_DENIED_ERROR 1045 </P>
<P style="TEXT-INDENT: 2em">"Access denied for user: '%-.32s'@'%-.64s' (Using password: %s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_DB_ERROR 1046 </P>
<P style="TEXT-INDENT: 2em">"No Database Selected"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_COM_ERROR 1047 </P>
<P style="TEXT-INDENT: 2em">"Unknown command"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_NULL_ERROR 1048 </P>
<P style="TEXT-INDENT: 2em">"Column '%-.64s' cannot be null"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_DB_ERROR 1049 </P>
<P style="TEXT-INDENT: 2em">"Unknown database '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_EXISTS_ERROR 1050 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' already exists"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_TABLE_ERROR 1051 </P>
<P style="TEXT-INDENT: 2em">"Unknown table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NON_UNIQ_ERROR 1052 </P>
<P style="TEXT-INDENT: 2em">"Column: '%-.64s' in %-.64s is ambiguous"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SERVER_SHUTDOWN 1053 </P>
<P style="TEXT-INDENT: 2em">"Server shutdown in progress"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_FIELD_ERROR 1瘀牡?剕 ????o鸞? 054 </P>
<P style="TEXT-INDENT: 2em">"Unknown column '%-.64s' in '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_FIELD_WITH_GROUP 1055 </P>
<P style="TEXT-INDENT: 2em">"'%-.64s' isn't in GROUP BY"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_GROUP_FIELD 1056 </P>
<P style="TEXT-INDENT: 2em">"Can't group on '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_SUM_Select 1057 </P>
<P style="TEXT-INDENT: 2em">"Statement has sum functions and columns in same statement"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_VALUE_COUNT 1058 </P>
<P style="TEXT-INDENT: 2em">"Column count doesn't match value count"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_LONG_IDENT 1059 </P>
<P style="TEXT-INDENT: 2em">"Identifier name '%-.100s' is too long"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_FIELDNAME 1060 </P>
<P style="TEXT-INDENT: 2em">"Duplicate column name '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_KEYNAME 1061 </P>
<P style="TEXT-INDENT: 2em">"Duplicate key name '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_ENTRY 1062 </P>
<P style="TEXT-INDENT: 2em">"Duplicate entry '%-.64s' for key %d"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_FIELD_SPEC 1063 </P>
<P style="TEXT-INDENT: 2em">"Incorrect column specifier for column '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_PARSE_ERROR 1064 </P>
<P style="TEXT-INDENT: 2em">"%s near '%-.80s' at line %d"， </P>
<P style="TEXT-INDENT: 2em">#define ER_EMPTY_QUERY 1065 </P>
<P style="TEXT-INDENT: 2em">"Query was empty"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NONUNIQ_TABLE 1066 </P>
<P style="TEXT-INDENT: 2em">"Not unique table/alias: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_INVALID_DEFAULT 1067 </P>
<P style="TEXT-INDENT: 2em">"Invalid default value for '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MULTIPLE_PRI_KEY 1068 </P>
<P style="TEXT-INDENT: 2em">"Multiple primary key defined"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_KEYS 1069 </P>
<P style="TEXT-INDENT: 2em">"Too many keys specified; max %d keys allowed"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_KEY_PARTS 1070 </P>
<P style="TEXT-INDENT: 2em">"Too many key parts specified. Max %d parts allowed"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_LONG_KEY 1071 </P>
<P style="TEXT-INDENT: 2em">"Specified key was too long; max key length is %d bytes"， </P>
<P style="TEXT-INDENT: 2em">#define ER_KEY_COLUMN_DOES_NOT_EXITS 1072 </P>
<P style="TEXT-INDENT: 2em">"Key column '%-.64s' doesn't exist in table"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BLOB_USED_AS_KEY 1073 </P>
<P style="TEXT-INDENT: 2em">"BLOB column '%-.64s' can't be used in key specification with the used table type"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_BIG_FIELDLENGTH 1074 </P>
<P style="TEXT-INDENT: 2em">"Too big column length for column '%-.64s' (max = %d). Use BLOB instead"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_AUTO_KEY 1075 </P>
<P style="TEXT-INDENT: 2em">"Incorrect table definition; There can only be one auto column and it must be defined as a key"， </P>
<P style="TEXT-INDENT: 2em">#define ER_READY 1076 </P>
<P style="TEXT-INDENT: 2em">"%s: ready for connections. </P>
<P style="TEXT-INDENT: 2em">Version: '%s' socket: '%s' port: %d </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NORMAL_SHUTDOWN 1077 </P>
<P style="TEXT-INDENT: 2em">"%s: Normal shutdown </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_GOT_SIGNAL 1078 </P>
<P style="TEXT-INDENT: 2em">"%s: Got signal %d. Aborting! </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SHUTDOWN_COMPLETE 1079 </P>
<P style="TEXT-INDENT: 2em">"%s: Shutdown Complete </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FORCING_CLOSE 1080 </P>
<P style="TEXT-INDENT: 2em">"%s: 瘀牡?剕 ????o鸞? Forcing close of thread %ld user: '%-.32s' </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_IPSOCK_ERROR 1081 </P>
<P style="TEXT-INDENT: 2em">"Can't create IP socket"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_SUCH_INDEX 1082 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' has no index like the one used in Create INDEX. Recreate the table"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_FIELD_TERMINATORS 1083 </P>
<P style="TEXT-INDENT: 2em">"Field separator argument is not what is expected. Check the manual"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BLOBS_AND_NO_TERMINATED 1084 </P>
<P style="TEXT-INDENT: 2em">"You can't use fixed rowlength with BLOBs. Please use 'fields terminated by'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TEXTFILE_NOT_READABLE 1085 </P>
<P style="TEXT-INDENT: 2em">"The file '%-.64s' must be in the database directory or be readable by all"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FILE_EXISTS_ERROR 1086 </P>
<P style="TEXT-INDENT: 2em">"File '%-.80s' already exists"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOAD_INFO 1087 </P>
<P style="TEXT-INDENT: 2em">"Records: %ld Deleted: %ld Skipped: %ld Warnings: %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Alter_INFO 1088 </P>
<P style="TEXT-INDENT: 2em">"Records: %ld Duplicates: %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_SUB_KEY 1089 </P>
<P style="TEXT-INDENT: 2em">"Incorrect sub part key. The used key part isn't a string， the used length is longer than the key part or the storage engine doesn't support unique sub keys"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_REMOVE_ALL_FIELDS 1090 </P>
<P style="TEXT-INDENT: 2em">"You can't delete all columns with Alter TABLE. Use Drop TABLE instead"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Drop_FIELD_OR_KEY 1091 </P>
<P style="TEXT-INDENT: 2em">"Can't Drop '%-.64s'. Check that column/key exists"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Insert_INFO 1092 </P>
<P style="TEXT-INDENT: 2em">"Records: %ld Duplicates: %ld Warnings: %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Update_TABLE_USED 1093 </P>
<P style="TEXT-INDENT: 2em">"You can't specify target table '%-.64s' for update in FROM clause"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_SUCH_THREAD 1094 </P>
<P style="TEXT-INDENT: 2em">"Unknown thread id: %lu"， </P>
<P style="TEXT-INDENT: 2em">#define ER_KILL_DENIED_ERROR 1095 </P>
<P style="TEXT-INDENT: 2em">"You are not owner of thread %lu"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_TABLES_USED 1096 </P>
<P style="TEXT-INDENT: 2em">"No tables used"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_BIG_SET 1097 </P>
<P style="TEXT-INDENT: 2em">"Too many strings for column %-.64s and SET"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_UNIQUE_LOGFILE 1098 </P>
<P style="TEXT-INDENT: 2em">"Can't generate a unique log-filename %-.64s.(1-999) </P>
<P style="TEXT-INDENT: 2em">"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_NOT_LOCKED_FOR_WRITE 1099 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' was locked with a READ lock and can't be updated"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_NOT_LOCKED 1100 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' was not locked with LOCK TABLES"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BLOB_CANT_HAVE_DEFAULT 1101 </P>
<P style="TEXT-INDENT: 2em">"BLOB/TEXT column '%-.64s' can't have a default value"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_DB_NAME 1102 </P>
<P style="TEXT-INDENT: 2em">"Incorre瘀牡?剕 ????o鸞? ct database name '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_TABLE_NAME 1103 </P>
<P style="TEXT-INDENT: 2em">"Incorrect table name '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_BIG_Select 1104 </P>
<P style="TEXT-INDENT: 2em">"The Select would examine more rows than MAX_JOIN_SIZE. Check your Where and use SET SQL_BIG_SelectS=1 or SET SQL_MAX_JOIN_SIZE= </P>
<P style="TEXT-INDENT: 2em"># if the Select is ok"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_ERROR 1105 </P>
<P style="TEXT-INDENT: 2em">"Unknown error"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_PROCEDURE 1106 </P>
<P style="TEXT-INDENT: 2em">"Unknown procedure '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_PARAMCOUNT_TO_PROCEDURE 1107 </P>
<P style="TEXT-INDENT: 2em">"Incorrect parameter count to procedure '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_PARAMETERS_TO_PROCEDURE 1108 </P>
<P style="TEXT-INDENT: 2em">"Incorrect parameters to procedure '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_TABLE 1109 </P>
<P style="TEXT-INDENT: 2em">"Unknown table '%-.64s' in %-.32s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FIELD_SPECIFIED_TWICE 1110 </P>
<P style="TEXT-INDENT: 2em">"Column '%-.64s' specified twice"， </P>
<P style="TEXT-INDENT: 2em">#define ER_INVALID_GROUP_FUNC_USE 1111 </P>
<P style="TEXT-INDENT: 2em">"Invalid use of group function"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNSUPPORTED_EXTENSION 1112 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' uses an extension that doesn't exist in this MySQL version"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_MUST_HAVE_COLUMNS 1113 </P>
<P style="TEXT-INDENT: 2em">"A table must have at least 1 column"， </P>
<P style="TEXT-INDENT: 2em">#define ER_RECORD_FILE_FULL 1114 </P>
<P style="TEXT-INDENT: 2em">"The table '%-.64s' is full"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_CHARACTER_SET 1115 </P>
<P style="TEXT-INDENT: 2em">"Unknown character set: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_TABLES 1116 </P>
<P style="TEXT-INDENT: 2em">"Too many tables. MySQL can only use %d tables in a join"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_FIELDS 1117 </P>
<P style="TEXT-INDENT: 2em">"Too many columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_BIG_ROWSIZE 1118 </P>
<P style="TEXT-INDENT: 2em">"Too big row size. The maximum row size for the used table type， not counting BLOBs， is %ld. You have to change some fields to TEXT or BLOBs"， </P>
<P style="TEXT-INDENT: 2em">#define ER_STACK_OVERRUN 1119 </P>
<P style="TEXT-INDENT: 2em">"Thread stack overrun: Used: %ld of a %ld stack. Use 'mysqld -O thread_stack= </P>
<P style="TEXT-INDENT: 2em">#' to specify a bigger stack if needed"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_OUTER_JOIN 1120 </P>
<P style="TEXT-INDENT: 2em">"Cross dependency found in OUTER JOIN. Examine your ON conditions"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NULL_COLUMN_IN_INDEX 1121 </P>
<P style="TEXT-INDENT: 2em">"Column '%-.64s' is used with UNIQUE or INDEX but is not defined as NOT NULL"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_FIND_UDF 1122 </P>
<P style="TEXT-INDENT: 2em">"Can't load function '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_INITIALIZE_UDF 1123 </P>
<P style="TEXT-INDENT: 2em">"Can't initialize function '%-.64s'; %-.80s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UDF_NO_PATHS 1124 </P>
<P style="TEXT-INDENT: 2em">"No paths allowed for shared瘀牡?剕 ????o鸞?  liary"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UDF_EXISTS 1125 </P>
<P style="TEXT-INDENT: 2em">"Function '%-.64s' already exist"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_OPEN_LIBRARY 1126 </P>
<P style="TEXT-INDENT: 2em">"Can't open shared liary '%-.64s' (errno: %d %-.64s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_FIND_DL_ENTRY 1127 </P>
<P style="TEXT-INDENT: 2em">"Can't find function '%-.64s' in liary'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FUNCTION_NOT_DEFINED 1128 </P>
<P style="TEXT-INDENT: 2em">"Function '%-.64s' is not defined"， </P>
<P style="TEXT-INDENT: 2em">#define ER_HOST_IS_BLOCKED 1129 </P>
<P style="TEXT-INDENT: 2em">"Host '%-.64s' is blocked because of many connection errors. Unblock with 'mysqladmin flush-hosts'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_HOST_NOT_PRIVILEGED 1130 </P>
<P style="TEXT-INDENT: 2em">"Host '%-.64s' is not allowed to connect to this MySQL server"， </P>
<P style="TEXT-INDENT: 2em">#define ER_PASSWORD_ANONYMOUS_USER 1131 </P>
<P style="TEXT-INDENT: 2em">"You are using MySQL as an anonymous users and anonymous users are not allowed to change passwords"， </P>
<P style="TEXT-INDENT: 2em">#define ER_PASSWORD_NOT_ALLOWED 1132 </P>
<P style="TEXT-INDENT: 2em">"You must have privileges to update tables in the mysql database to be able to change passwords for others"， </P>
<P style="TEXT-INDENT: 2em">#define ER_PASSWORD_NO_MATCH 1133 </P>
<P style="TEXT-INDENT: 2em">"Can't find any matching row in the user table"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Update_INFO 1134 </P>
<P style="TEXT-INDENT: 2em">"Rows matched: %ld Changed: %ld Warnings: %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Create_THREAD 1135 </P>
<P style="TEXT-INDENT: 2em">"Can't create a new thread (errno %d). If you are not out of available memory， you can consult the manual for a possible OS-dependent bug"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_VALUE_COUNT_ON_ROW 1136 </P>
<P style="TEXT-INDENT: 2em">"Column count doesn't match value count at row %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_REOPEN_TABLE 1137 </P>
<P style="TEXT-INDENT: 2em">"Can't reopen table: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_INVALID_USE_OF_NULL 1138 </P>
<P style="TEXT-INDENT: 2em">"Invalid use of NULL value"， </P>
<P style="TEXT-INDENT: 2em">#define ER_REGEXP_ERROR 1139 </P>
<P style="TEXT-INDENT: 2em">"Got error '%-.64s' from regexp"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MIX_OF_GROUP_FUNC_AND_FIELDS 1140 </P>
<P style="TEXT-INDENT: 2em">"Mixing of GROUP columns (MIN()，MAX()，COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NONEXISTING_GRANT 1141 </P>
<P style="TEXT-INDENT: 2em">"There is no such grant defined for user '%-.32s' on host '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLEACCESS_DENIED_ERROR 1142 </P>
<P style="TEXT-INDENT: 2em">"%-.16s command denied to user: '%-.32s'@'%-.64s' for table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_COLUMNACCESS_DENIED_ERROR 1143 </P>
<P style="TEXT-INDENT: 2em">"%-.16s command denied to user: '%-.32s'@'%-.64s' for column '%-.64s' in table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ILLEGAL_GRANT_FOR_TABLE 1144 </P>
<P style="TEXT-INDENT: 2em">"I瘀牡?剕 ????o鸞? llegal GRANT/REVOKE command. Please consult the manual which privileges can be used"， </P>
<P style="TEXT-INDENT: 2em">#define ER_GRANT_WRONG_HOST_OR_USER 1145 </P>
<P style="TEXT-INDENT: 2em">"The host or user argument to GRANT is too long"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_SUCH_TABLE 1146 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s.%-.64s' doesn't exist"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NONEXISTING_TABLE_GRANT 1147 </P>
<P style="TEXT-INDENT: 2em">"There is no such grant defined for user '%-.32s' on host '%-.64s' on table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NOT_ALLOWED_COMMAND 1148 </P>
<P style="TEXT-INDENT: 2em">"The used command is not allowed with this MySQL version"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SYNTAX_ERROR 1149 </P>
<P style="TEXT-INDENT: 2em">"You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DELAYED_CANT_CHANGE_LOCK 1150 </P>
<P style="TEXT-INDENT: 2em">"Delayed insert thread couldn't get requested lock for table %-.64s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_DELAYED_THREADS 1151 </P>
<P style="TEXT-INDENT: 2em">"Too many delayed threads in use"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ABORTING_CONNECTION 1152 </P>
<P style="TEXT-INDENT: 2em">"Aborted connection %ld to db: '%-.64s' user: '%-.32s' (%-.64s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_PACKET_TOO_LARGE 1153 </P>
<P style="TEXT-INDENT: 2em">"Got a packet bigger than 'max_allowed_packet'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_READ_ERROR_FROM_PIPE 1154 </P>
<P style="TEXT-INDENT: 2em">"Got a read error from the connection pipe"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_FCNTL_ERROR 1155 </P>
<P style="TEXT-INDENT: 2em">"Got an error from fcntl()"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_PACKETS_OUT_OF_ORDER 1156 </P>
<P style="TEXT-INDENT: 2em">"Got packets out of order"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_UNCOMPRESS_ERROR 1157 </P>
<P style="TEXT-INDENT: 2em">"Couldn't uncompress communication packet"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_READ_ERROR 1158 </P>
<P style="TEXT-INDENT: 2em">"Got an error reading communication packets"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_READ_INTERRUPTED 1159 </P>
<P style="TEXT-INDENT: 2em">"Got timeout reading communication packets"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_ERROR_ON_WRITE 1160 </P>
<P style="TEXT-INDENT: 2em">"Got an error writing communication packets"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NET_WRITE_INTERRUPTED 1161 </P>
<P style="TEXT-INDENT: 2em">"Got timeout writing communication packets"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_LONG_STRING 1162 </P>
<P style="TEXT-INDENT: 2em">"Result string is longer than max_allowed_packet"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_CANT_HANDLE_BLOB 1163 </P>
<P style="TEXT-INDENT: 2em">"The used table type doesn't support BLOB/TEXT columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_CANT_HANDLE_AUTO_INCREMENT 1164 </P>
<P style="TEXT-INDENT: 2em">"The used table type doesn't support AUTO_INCREMENT columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DELAYED_Insert_TABLE_LOCKED 1165 </P>
<P style="TEXT-INDENT: 2em">"Insert DELAYED can't be used with table '%-.64s瘀牡?剕 ????o鸞? ' because it is locked with LOCK TABLES"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_COLUMN_NAME 1166 </P>
<P style="TEXT-INDENT: 2em">"Incorrect column name '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_KEY_COLUMN 1167 </P>
<P style="TEXT-INDENT: 2em">"The used storage engine can't index column '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_MRG_TABLE 1168 </P>
<P style="TEXT-INDENT: 2em">"All tables in the MERGE table are not identically defined"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_UNIQUE 1169 </P>
<P style="TEXT-INDENT: 2em">"Can't write， because of unique constraint， to table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BLOB_KEY_WITHOUT_LENGTH 1170 </P>
<P style="TEXT-INDENT: 2em">"BLOB/TEXT column '%-.64s' used in key specification without a key length"， </P>
<P style="TEXT-INDENT: 2em">#define ER_PRIMARY_CANT_HAVE_NULL 1171 </P>
<P style="TEXT-INDENT: 2em">"All parts of a PRIMARY KEY must be NOT NULL; If you need NULL in a key， use UNIQUE instead"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_ROWS 1172 </P>
<P style="TEXT-INDENT: 2em">"Result consisted of more than one row"， </P>
<P style="TEXT-INDENT: 2em">#define ER_REQUIRES_PRIMARY_KEY 1173 </P>
<P style="TEXT-INDENT: 2em">"This table type requires a primary key"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_RAID_COMPILED 1174 </P>
<P style="TEXT-INDENT: 2em">"This version of MySQL is not compiled with RAID support"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Update_WITHOUT_KEY_IN_SAFE_MODE 1175 </P>
<P style="TEXT-INDENT: 2em">"You are using safe update mode and you tried to update a table without a Where that uses a KEY column"， </P>
<P style="TEXT-INDENT: 2em">#define ER_KEY_DOES_NOT_EXITS 1176 </P>
<P style="TEXT-INDENT: 2em">"Key '%-.64s' doesn't exist in table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CHECK_NO_SUCH_TABLE 1177 </P>
<P style="TEXT-INDENT: 2em">"Can't open table"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CHECK_NOT_IMPLEMENTED 1178 </P>
<P style="TEXT-INDENT: 2em">"The storage engine for the table doesn't support %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_DO_THIS_DURING_AN_TRANSACTION 1179 </P>
<P style="TEXT-INDENT: 2em">"You are not allowed to execute this command in a transaction"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_DURING_COMMIT 1180 </P>
<P style="TEXT-INDENT: 2em">"Got error %d during COMMIT"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_DURING_ROLLBACK 1181 </P>
<P style="TEXT-INDENT: 2em">"Got error %d during ROLLBACK"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_DURING_FLUSH_LOGS 1182 </P>
<P style="TEXT-INDENT: 2em">"Got error %d during FLUSH_LOGS"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_DURING_CHECKPOINT 1183 </P>
<P style="TEXT-INDENT: 2em">"Got error %d during CHECKPOINT"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NEW_ABORTING_CONNECTION 1184 </P>
<P style="TEXT-INDENT: 2em">"Aborted connection %ld to db: '%-.64s' user: '%-.32s' host: `%-.64s' (%-.64s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUMP_NOT_IMPLEMENTED 1185 </P>
<P style="TEXT-INDENT: 2em">"The storage engine for the table does not support binary table dump"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FLUSH_MASTER_BINLOG_CLOSED 1186 </P>
<P style="TEXT-INDENT: 2em">"Binlog closed， cannot RESET MASTER"， </P>
<P style="TEXT-INDENT: 2em">#define ER_INDEX_REBUILD 1187 </P>
<P style="TEXT-INDENT: 2em">"Faile瘀牡?剕 ????o鸞? d rebuilding the index of dumped table '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MASTER 1188 </P>
<P style="TEXT-INDENT: 2em">"Error from master: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MASTER_NET_READ 1189 </P>
<P style="TEXT-INDENT: 2em">"Net error reading from master"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MASTER_NET_WRITE 1190 </P>
<P style="TEXT-INDENT: 2em">"Net error writing to master"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FT_MATCHING_KEY_NOT_FOUND 1191 </P>
<P style="TEXT-INDENT: 2em">"Can't find FULLTEXT index matching the column list"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOCK_OR_ACTIVE_TRANSACTION 1192 </P>
<P style="TEXT-INDENT: 2em">"Can't execute the given command because you have active locked tables or an active transaction"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_SYSTEM_VARIABLE 1193 </P>
<P style="TEXT-INDENT: 2em">"Unknown system variable '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CRASHED_ON_USAGE 1194 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' is marked as crashed and should be repaired"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CRASHED_ON_REPAIR 1195 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' is marked as crashed and last (automatic?) repair failed"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARNING_NOT_COMPLETE_ROLLBACK 1196 </P>
<P style="TEXT-INDENT: 2em">"Some non-transactional changed tables couldn't be rolled back"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TRANS_CACHE_FULL 1197 </P>
<P style="TEXT-INDENT: 2em">"Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage. Increase this mysqld variable and try again"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_MUST_STOP 1198 </P>
<P style="TEXT-INDENT: 2em">"This operation cannot be performed with a running slave， run STOP SLAVE first"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_NOT_RUNNING 1199 </P>
<P style="TEXT-INDENT: 2em">"This operation requires a running slave， configure slave and do START SLAVE"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_SLAVE 1200 </P>
<P style="TEXT-INDENT: 2em">"The server is not configured as slave， fix in config file or with CHANGE MASTER TO"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MASTER_INFO 1201 </P>
<P style="TEXT-INDENT: 2em">"Could not initialize master info structure， more error messages can be found in the MySQL error log"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_THREAD 1202 </P>
<P style="TEXT-INDENT: 2em">"Could not create slave thread， check system resources"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MANY_USER_CONNECTIONS 1203 </P>
<P style="TEXT-INDENT: 2em">"User %-.64s has already more than 'max_user_connections' active connections"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SET_CONSTANTS_ONLY 1204 </P>
<P style="TEXT-INDENT: 2em">"You may only use constant e&shy;xpressions with SET"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOCK_WAIT_TIMEOUT 1205 </P>
<P style="TEXT-INDENT: 2em">"Lock wait timeout exceeded; Try restarting transaction"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOCK_TABLE_FULL 1206 </P>
<P style="TEXT-INDENT: 2em">"The total number of locks exceeds the lock table size"， </P>
<P style="TEXT-INDENT: 2em">#define ER_READ_ONLY_TRANSACTION 1207瘀牡?剕 ????o鸞?  </P>
<P style="TEXT-INDENT: 2em">"Update locks cannot be acquired during a READ UNCOMMITTED transaction"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Drop_DB_WITH_READ_LOCK 1208 </P>
<P style="TEXT-INDENT: 2em">"Drop DATABASE not allowed while thread is holding global read lock"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Create_DB_WITH_READ_LOCK 1209 </P>
<P style="TEXT-INDENT: 2em">"Create DATABASE not allowed while thread is holding global read lock"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_ARGUMENTS 1210 </P>
<P style="TEXT-INDENT: 2em">"Wrong arguments to %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_PERMISSION_TO_Create_USER 1211 </P>
<P style="TEXT-INDENT: 2em">"'%-.32s'@'%-.64s' is not allowed to create new users"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNION_TABLES_IN_DIFFERENT_DIR 1212 </P>
<P style="TEXT-INDENT: 2em">"Incorrect table definition; all MERGE tables must be in the same database"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOCK_DEADLOCK 1213 </P>
<P style="TEXT-INDENT: 2em">"Deadlock found when trying to get lock; Try restarting transaction"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLE_CANT_HANDLE_FT 1214 </P>
<P style="TEXT-INDENT: 2em">"The used table type doesn't support FULLTEXT indexes"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANNOT_ADD_FOREIGN 1215 </P>
<P style="TEXT-INDENT: 2em">"Cannot add foreign key constraint"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_REFERENCED_ROW 1216 </P>
<P style="TEXT-INDENT: 2em">"Cannot add or update a child row: a foreign key constraint fails"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ROW_IS_REFERENCED 1217 </P>
<P style="TEXT-INDENT: 2em">"Cannot delete or update a parent row: a foreign key constraint fails"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CONNECT_TO_MASTER 1218 </P>
<P style="TEXT-INDENT: 2em">"Error connecting to master: %-.128s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_QUERY_ON_MASTER 1219 </P>
<P style="TEXT-INDENT: 2em">"Error running query on master: %-.128s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ERROR_WHEN_EXECUTING_COMMAND 1220 </P>
<P style="TEXT-INDENT: 2em">"Error when executing command %s: %-.128s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_USAGE 1221 </P>
<P style="TEXT-INDENT: 2em">"Wrong usage of %s and %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_NUMBER_OF_COLUMNS_IN_Select 1222 </P>
<P style="TEXT-INDENT: 2em">"The used Select statements have a different number of columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_Update_WITH_READLOCK 1223 </P>
<P style="TEXT-INDENT: 2em">"Can't execute the query because you have a conflicting read lock"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MIXING_NOT_ALLOWED 1224 </P>
<P style="TEXT-INDENT: 2em">"Mixing of transactional and non-transactional tables is disabled"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUP_ARGUMENT 1225 </P>
<P style="TEXT-INDENT: 2em">"Option '%s' used twice in statement"， </P>
<P style="TEXT-INDENT: 2em">#define ER_USER_LIMIT_REACHED 1226 </P>
<P style="TEXT-INDENT: 2em">"User '%-.64s' has exceeded the '%s' resource (current value: %ld)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SPECIFIC_ACCESS_DENIED_ERROR 1227 </P>
<P style="TEXT-INDENT: 2em">"Access denied. You need the %-.128s privilege for this operation"， </P>
<P style="TEXT-INDENT: 2em">#define ER_LOCAL_VARIABLE 1228 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' 瘀牡?剕 ????o鸞? is a SESSION variable and can't be used with SET GLOBAL"， </P>
<P style="TEXT-INDENT: 2em">#define ER_GLOBAL_VARIABLE 1229 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' is a GLOBAL variable and should be set with SET GLOBAL"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NO_DEFAULT 1230 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' doesn't have a default value"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_VALUE_FOR_VAR 1231 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' can't be set to the value of '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_TYPE_FOR_VAR 1232 </P>
<P style="TEXT-INDENT: 2em">"Wrong argument type to variable '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_VAR_CANT_BE_READ 1233 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' can only be set， not read"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_USE_OPTION_HERE 1234 </P>
<P style="TEXT-INDENT: 2em">"Wrong usage/placement of '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define 1235 </P>
<P style="TEXT-INDENT: 2em">"This version of MySQL doesn't yet support '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MASTER_FATAL_ERROR_READING_BINLOG 1236 </P>
<P style="TEXT-INDENT: 2em">"Got fatal error %d: '%-.128s' from master when reading data from binary log"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_IGNORED_TABLE 1237 </P>
<P style="TEXT-INDENT: 2em">"Slave SQL thread ignored the query because of replicate-*-table rules"， </P>
<P style="TEXT-INDENT: 2em">#define ER_INCORRECT_GLOBAL_LOCAL_VAR 1238 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' is a %s variable"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_FK_DEF 1239 </P>
<P style="TEXT-INDENT: 2em">"Wrong foreign key definition for '%-.64s': %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_KEY_REF_DO_NOT_MATCH_TABLE_REF 1240 </P>
<P style="TEXT-INDENT: 2em">"Key reference and table reference doesn't match"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OPERAND_COLUMNS 1241 </P>
<P style="TEXT-INDENT: 2em">"Operand should contain %d column(s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SUBQUERY_NO_1_ROW 1242 </P>
<P style="TEXT-INDENT: 2em">"Subquery returns more than 1 row"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_STMT_HANDLER 1243 </P>
<P style="TEXT-INDENT: 2em">"Unknown prepared statement handler (%ld) given to %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CORRUPT_HELP_DB 1244 </P>
<P style="TEXT-INDENT: 2em">"Help database is corrupt or does not exist"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CYCLIC_REFERENCE 1245 </P>
<P style="TEXT-INDENT: 2em">"Cyclic reference on subqueries"， </P>
<P style="TEXT-INDENT: 2em">#define ER_AUTO_CONVERT 1246 </P>
<P style="TEXT-INDENT: 2em">"Converting column '%s' from %s to %s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ILLEGAL_REFERENCE 1247 </P>
<P style="TEXT-INDENT: 2em">"Reference '%-.64s' not supported (%s)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DERIVED_MUST_HAVE_ALIAS 1248 </P>
<P style="TEXT-INDENT: 2em">"Every derived table must have it's own alias"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Select_REDUCED 1249 </P>
<P style="TEXT-INDENT: 2em">"Select %u was reduced during optimisation"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TABLENAME_NOT_ALLOWED_HERE 1250 </P>
<P style="TEXT-INDENT: 2em">"Table '%-.64s' from one of Select's can not be used in %-.32s"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NOT_SUPPORTED_AUTH_MODE 1251 </P>
<P style="TEXT-INDENT: 2em">"Client does not support authentication pr瘀牡?剕 ????o鸞? otocol requested by server; consider upgrading MySQL client"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SPATIAL_CANT_HAVE_NULL 1252 </P>
<P style="TEXT-INDENT: 2em">"All parts of a SPATIAL KEY must be NOT NULL"， </P>
<P style="TEXT-INDENT: 2em">#define ER_COLLATION_CHARSET_MISMATCH 1253 </P>
<P style="TEXT-INDENT: 2em">"COLLATION '%s' is not valid for CHARACTER SET '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_WAS_RUNNING 1254 </P>
<P style="TEXT-INDENT: 2em">"Slave is already running"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_WAS_NOT_RUNNING 1255 </P>
<P style="TEXT-INDENT: 2em">"Slave has already been stopped"， </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_BIG_FOR_UNCOMPRESS 1256 </P>
<P style="TEXT-INDENT: 2em">"Too big size of uncompressed data. The maximum size is %d. (probably， length of uncompressed data was corrupted)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ZLIB_Z_MEM_ERROR 1257 </P>
<P style="TEXT-INDENT: 2em">"ZLIB: Not enough memory"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ZLIB_Z_BUF_ERROR 1258 </P>
<P style="TEXT-INDENT: 2em">"ZLIB: Not enough room in the output buffer (probably， length of uncompressed data was corrupted)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_ZLIB_Z_DATA_ERROR 1259 </P>
<P style="TEXT-INDENT: 2em">"ZLIB: Input data corrupted"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CUT_VALUE_GROUP_CONCAT 1260 </P>
<P style="TEXT-INDENT: 2em">"%d line(s) was(were) cut by group_concat()"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_TOO_FEW_RECORDS 1261 </P>
<P style="TEXT-INDENT: 2em">"Row %ld doesn't contain data for all columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_TOO_MANY_RECORDS 1262 </P>
<P style="TEXT-INDENT: 2em">"Row %ld was truncated; It contained more data than there were input columns"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_NULL_TO_NOTNULL 1263 </P>
<P style="TEXT-INDENT: 2em">"Data truncated， NULL supplied to NOT NULL column '%s' at row %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_DATA_OUT_OF_RANGE 1264 </P>
<P style="TEXT-INDENT: 2em">"Data truncated， out of range for column '%s' at row %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_DATA_TRUNCATED 1265 </P>
<P style="TEXT-INDENT: 2em">"Data truncated for column '%s' at row %ld"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_USING_OTHER_HANDLER 1266 </P>
<P style="TEXT-INDENT: 2em">"Using storage engine %s for table '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_AGGREGATE_2COLLATIONS 1267 </P>
<P style="TEXT-INDENT: 2em">"Illegal mix of collations (%s，%s) and (%s，%s) for operation '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_Drop_USER 1268 </P>
<P style="TEXT-INDENT: 2em">"Can't drop one or more of the requested users"， </P>
<P style="TEXT-INDENT: 2em">#define ER_REVOKE_GRANTS 1269 </P>
<P style="TEXT-INDENT: 2em">"Can't revoke all privileges， grant for one or more of the requested users"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_AGGREGATE_3COLLATIONS 1270 </P>
<P style="TEXT-INDENT: 2em">"Illegal mix of collations (%s，%s)， (%s，%s)， (%s，%s) for operation '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_CANT_AGGREGATE_NCOLLATIONS 1271 </P>
<P style="TEXT-INDENT: 2em">"Illegal mix of collations for operation '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_VARIABLE_IS_NOT_STRUCT 1272 </P>
<P style="TEXT-INDENT: 2em">"Variable '%-.64s' is瘀牡?剕 ????o鸞?  not a variable component (Can't be used as XXXX.variable_name)"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_COLLATION 1273 </P>
<P style="TEXT-INDENT: 2em">"Unknown collation: '%-.64s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SLAVE_IGNORED_SSL_PARAMS 1274 </P>
<P style="TEXT-INDENT: 2em">"SSL parameters in CHANGE MASTER are ignored because this MySQL slave was compiled without SSL support; they can be used later when MySQL slave with SSL will be started"， </P>
<P style="TEXT-INDENT: 2em">#define ER_SERVER_IS_IN_SECURE_AUTH_MODE 1275 </P>
<P style="TEXT-INDENT: 2em">"Server is running in --secure-auth mode， but '%s'@'%s' has a password in the old format; please change the password to the new format"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_FIELD_RESOLVED 1276 </P>
<P style="TEXT-INDENT: 2em">"Field or reference '%-.64s%s%-.64s%s%-.64s' of Select </P>
<P style="TEXT-INDENT: 2em">#%d was resolved in Select </P>
<P style="TEXT-INDENT: 2em">#%d"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_SLAVE_UNTIL_COND 1277 </P>
<P style="TEXT-INDENT: 2em">"Wrong parameter or combination of parameters for START SLAVE UNTIL"， </P>
<P style="TEXT-INDENT: 2em">#define ER_MISSING_SKIP_SLAVE 1278 </P>
<P style="TEXT-INDENT: 2em">"It is recommended to use --skip-slave-start when doing step-by-step replication with START SLAVE UNTIL. Otherwise you will get problems if you get an unexpected slave's mysqld restart"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNTIL_COND_IGNORED 1279 </P>
<P style="TEXT-INDENT: 2em">"SQL thread is not to be started so UNTIL options are ignored"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_NAME_FOR_INDEX 1280 </P>
<P style="TEXT-INDENT: 2em">"Incorrect index name '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WRONG_NAME_FOR_CATALOG 1281 </P>
<P style="TEXT-INDENT: 2em">"Incorrect catalog name '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_QC_RESIZE 1282 </P>
<P style="TEXT-INDENT: 2em">"Query cache failed to set size %lu， new query cache size is %lu"， </P>
<P style="TEXT-INDENT: 2em">#define ER_BAD_FT_COLUMN 1283 </P>
<P style="TEXT-INDENT: 2em">"Column '%-.64s' cannot be part of FULLTEXT index"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_KEY_CACHE 1284 </P>
<P style="TEXT-INDENT: 2em">"Unknown key cache '%-.100s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_HOSTNAME_WONT_WORK 1285 </P>
<P style="TEXT-INDENT: 2em">"MySQL is started in --skip-name-resolve mode. You need to restart it without this switch for this grant to work"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNKNOWN_STORAGE_ENGINE 1286 </P>
<P style="TEXT-INDENT: 2em">"Unknown table engine '%s'"， </P>
<P style="TEXT-INDENT: 2em">#define ER_WARN_DEPRECATED_SYNTAX 1287 </P>
<P style="TEXT-INDENT: 2em">"'%s' is deprecated， use '%s' instead"， </P>
<P style="TEXT-INDENT: 2em">#define ER_NON_UPDATABLE_TABLE 1288 </P>
<P style="TEXT-INDENT: 2em">"The target table %-.100s of the %s is not updatable"， </P>
<P style="TEXT-INDENT: 2em">#define ER_FEATURE_DISABLED 1289 </P>
<P style="TEXT-INDENT: 2em">"The '%s' feature was disabled; you need MySQL built with '%s' to have it working"， </P>
<P style="TEXT-INDENT: 2em">#define ER_OPTION_PREVENTS_STATEME瘀牡?剕 ????o鸞? NT 1290 </P>
<P style="TEXT-INDENT: 2em">"The MySQL server is running with the %s option so it cannot execute this statement"， </P>
<P style="TEXT-INDENT: 2em">#define ER_DUPLICATED_VALUE_IN_TYPE 1291 </P>
<P style="TEXT-INDENT: 2em">"Column '%-.100s' has duplicated value '%-.64s' in %s" </P>
<P style="TEXT-INDENT: 2em">#define ER_TRUNCATED_WRONG_VALUE 1292 </P>
<P style="TEXT-INDENT: 2em">"Truncated wrong %-.32s value: '%-.128s'" </P>
<P style="TEXT-INDENT: 2em">#define ER_TOO_MUCH_AUTO_TIMESTAMP_COLS 1293 </P>
<P style="TEXT-INDENT: 2em">"Incorrect table definition; There can only be one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON Update clause" </P>
<P style="TEXT-INDENT: 2em">#define ER_INVALID_ON_Update 1294 </P>
<P style="TEXT-INDENT: 2em">"Invalid ON Update clause for '%-.64s' field"， </P>
<P style="TEXT-INDENT: 2em">#define ER_UNSUPPORTED_PS 1295 </P>
<P style="TEXT-INDENT: 2em">"This command is not supported in the prepared statement protocol yet"， </P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/615270702008219105929911</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/615270702008219105929911</guid>
    <pubDate>Wed, 19 Mar 2008 10:59:29 +0800</pubDate>
    <dcterms:modified>2008-03-19T10:59:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[再议PHP正则表达式]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200821210506929</link>
    <description><![CDATA[<div><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果我们问那些UNIX系统的爱好者他们最喜欢什么，答案除了稳定的系统和可以远程启
动之外，十有八九的人会提到正则表达式；如果我们再问他们最头痛的是什么，可能除了复杂的进程控制和安装过程之外，还会是正则表达式。那么正则表达式到底
是什么？如何才能真正的掌握正则表达式并正确的加以灵活运用？本文将就此展开介绍，希望能够对那些渴望了解和掌握正则表达式的读者有所助益。 <br><br><strong>入门简介</strong> <br>　
　简单的说，正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影，例如，vi编
辑器，Perl或PHP脚本语言，以及awk或sed
shell程序等。此外，象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。由此可见，正则表达式已经超出了某种语言或某个系统的
局限，成为人们广为接受的概念和功能。 <br>　　正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式，然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较，根据比较对象中是否包含匹配模式，执行相应的程序。 <br>　
　举例来说，正则表达式的一个最为普遍的应用就是用于验证用户在线输入的邮件地址的格式是否正确。如果通过正则表达式验证用户邮件地址的格式正确，用户所
填写的表单信息将会被正常处理；反之，如果用户输入的邮件地址与正则表达的模式不匹配，将会弹出提示信息，要求用户重新输入正确的邮件地址。由此可见正则
表达式在WEB应用的逻辑判断中具有举足轻重的作用。 <br><br><strong>基本语法</strong> <br>　　在对正则表达式的功能和作用有了初步的了解之后，我们就来具体看一下正则表达式的语法格式。 <br>　　正则表达式的形式一般如下： <br>　　/love/ <br>　
　其中位于“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。用户只要把希望查找匹配对象的模式内容放入“/”定界符之间即可。为了能够使用户
更加灵活的定制模式内容，正则表达式提供了专门的“元字符”。所谓元字符就是指那些在正则表达式中具有特殊意义的专用字符，可以用来规定其前导字符（即位
于元字符前面的字符）在目标对象中的出现模式。 <br>　　较为常用的元字符包括： “+”， “*”，以及 “?”。其中，“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次，“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次，而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。 <br>　　下面，就让我们来看一下正则表达式元字符的具体应用。 <br>　　/fo+/ <br>　　因为上述正则表达式中包含“+”元字符，表示可以与目标对象中的 “fool”, “fo”, 或者 “football”等在字母f后面连续出现一个或多个字母o的字符串相匹配。 <br>　　/eg*/ <br>　　因为上述正则表达式中包含“*”元字符，表示可以与目标对象中的 “easy”, “ego”, 或者 “egg”等在字母e后面连续出现零个或多个字母g的字符串相匹配。 <br>　　/Wil?/ <br>　　因为上述正则表达式中包含“？”元字符，表示可以与目标对象中的 “Win”, 或者 “Wilson”,等在字母i后面连续出现零个或一个字母l的字符串相匹配。 <br>　　除了元字符之外，用户还可以精确指定模式在匹配对象中出现的频率。例如， <br>　　/jim{2,6}/ <br>　　上述正则表达式规定字符m可以在匹配对象中连续出现2-6次，因此，上述正则表达式可以同jimmy或jimmmmmy等字符串相匹配。 <br>　　在对如何使用正则表达式有了初步了解之后，我们来看一下其它几个重要的元字符的使用方式。 <br>　　\s：用于匹配单个空格符，包括tab键和换行符； <br>　　\S：用于匹配除单个空格符之外的所有字符； <br>　　\d：用于匹配从0到9的数字； <br>　　\w：用于匹配字母，数字或下划线字符； <br>　　\W：用于匹配所有与\w不匹配的字符； <br>　　. ：用于匹配除换行符之外的所有字符。 <br>　　（说明：我们可以把\s和\S以及\w和\W看作互为逆运算） <br>　　下面，我们就通过实例看一下如何在正则表达式中使用上述元字符。 <br>　　/\s+/ <br>　　上述正则表达式可以用于匹配目标对象中的一个或多个空格字符。 <br>　　/\d000/ <br>　　如果我们手中有一份复杂的财务报表，那么我们可以通过上述正则表达式轻而易举的查找到所有总额达千元的款项。 <br>　　除了我们以上所介绍的元字符之外，正则表达式中还具有另外一种较为独特的专用字符，即定位符。定位符用于规定匹配模式在目标对象中的出现位置。 <br>　
　较为常用的定位符包括： “^”, “$”, “\b” 以及
“\B”。其中，“^”定位符规定匹配模式必须出现在目标字符串的开头，“$”定位符规定匹配模式必须出现在目标对象的结尾，\b定位符规定匹配模式必须
出现在目标字符串的开头或结尾的两个边界之一，而“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内，即匹配对象既不能作为目标字
符串的开头，也不能作为目标字符串的结尾。同样，我们也可以把“^”和“$”以及“\b”和“\B”看作是互为逆运算的两组定位符。举例来说： <br>　　/^hell/ <br>　　因为上述正则表达式中包含“^”定位符，所以可以与目标对象中以 “hell”, “hello”或 “hellhound”开头的字符串相匹配。 <br>　　/ar$/ <br>　　因为上述正则表达式中包含“$”定位符，所以可以与目标对象中以 “car”, “bar”或 “ar” 结尾的字符串相匹配。 <br>　　/\bbom/ <br>　　因为上述正则表达式模式以“\b”定位符开头，所以可以与目标对象中以 “bomb”, 或 “bom”开头的字符串相匹配。 <br>　　/man\b/ <br>　　因为上述正则表达式模式以“\b”定位符结尾，所以可以与目标对象中以 “human”, “woman”或 “man”结尾的字符串相匹配。 <br>　　为了能够方便用户更加灵活的设定匹配模式，正则表达式允许使用者在匹配模式中指定某一个范围而不局限于具体的字符。例如： <br>　　/[A-Z]/ <br>　　上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。 <br>　　/[a-z]/ <br>　　上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。 <br>　　/[0-9]/ <br>　　上述正则表达式将会与从0到9范围内任何一个数字相匹配。 <br>　　/([a-z][A-Z][0-9])+/ <br>　
　上述正则表达式将会与任何由字母和数字组成的字符串，如 “aB0” 等相匹配。这里需要提醒用户注意的一点就是可以在正则表达式中使用 “()”
把字符串组合在一起。“()”符号包含的内容必须同时出现在目标对象中。因此，上述正则表达式将无法与诸如
“abc”等的字符串匹配，因为“abc”中的最后一个字符为字母而非数字。 <br>　　如果我们希望在正则表达式中实现类似编程逻辑中的“或”运算，在多个不同的模式中任选一个进行匹配的话，可以使用管道符 “|”。例如： <br>　　/to|too|2/ <br>　　上述正则表达式将会与目标对象中的 “to”, “too”, 或 “2” 相匹配。 <br>　　正则表达式中还有一个较为常用的运算符，即否定符 “[^]”。与我们前文所介绍的定位符 “^” 不同，否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串。例如： <br>　　/[^A-C]/ <br>　　上述字符串将会与目标对象中除A，B，和C之外的任何字符相匹配。一般来说，当“^”出现在 “[]”内时就被视做否定运算符；而当“^”位于“[]”之外，或没有“[]”时，则应当被视做定位符。 <br>　　最后，当用户需要在正则表达式的模式中加入元字符，并查找其匹配对象时，可以使用转义符“\”。例如： <br>　　/Th\*/ <br>　　上述正则表达式将会与目标对象中的“Th*”而非“The”等相匹配</span></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200821210506929</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200821210506929</guid>
    <pubDate>Wed, 12 Mar 2008 10:50:06 +0800</pubDate>
    <dcterms:modified>2008-03-12T10:52:45+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[Linux+Apache+Mysql+PHP典型配置]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/615270702008129101024248</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">关键字：apache+mysql+php apache mysql php 配置 lamp 服务器 web </P>
<P style="TEXT-INDENT: 2em">Linux+Apache+Mysql+PHP典型配置 </P>
<P style="TEXT-INDENT: 2em">调试环境：Redhat9.0 Apache1.3.29 Mysql3.23.58 PHP4.3.4</P>
<P style="TEXT-INDENT: 2em">Linux系统的安装我就不讲了，这是基本功，其实这篇文章在类似Redhat的其他linux也应该通用，大家只要掌握我提供的方法就行。记得安装Redhat9。0的时候不要安装系统默认的apache，mysql和php以及相关的软件。已经安装的请用rpm -e * 删除已经安装的包。</P>
<P style="TEXT-INDENT: 2em">1.安装Mysql3.23.58</P>
<P style="TEXT-INDENT: 2em">其实老实说直接安装Mysql官方网站提供的rpm包也是一个比较可行的办法，他的官方网站的rpm包的提供基本跟tar包发行是同步的，这点我比较喜欢，至少安装rpm包的在后面的调试中不会出现mysql库文件找不到的情况。但这里还是有必要讲一下自定义安装的步骤，毕竟网友自定义安装的还说挺多的。</P>
<P style="TEXT-INDENT: 2em">软件获取：http://www.mysql.com/downloads/index.html</P>
<P style="TEXT-INDENT: 2em">安装步骤：</P>
<P style="TEXT-INDENT: 2em">tar zxvf mysql-3.23.58.tar.gz </P>
<P style="TEXT-INDENT: 2em">cd mysql-3.23.58</P>
<P style="TEXT-INDENT: 2em">./configure --prefix=/usr/local/mysql --sysconfdir=/etc --localstatedir=/var/lib/mysql</P>
<P style="TEXT-INDENT: 2em">make</P>
<P style="TEXT-INDENT: 2em">make install</P>
<P style="TEXT-INDENT: 2em">#prefix=/usr/local/mysql mysql安装的目标目录</P>
<P style="TEXT-INDENT: 2em">#sysconfdir=/etc my.ini配置文件的路径</P>
<P style="TEXT-INDENT: 2em">#localstatedir=/var/lib/mysql 数据库存放的路径</P>
<P style="TEXT-INDENT: 2em">安装完以后要初始化数据库，当然你是升级的话不用做这步；</P>
<P style="TEXT-INDENT: 2em">/usr/local/mysql/bin/mysql_install_db</P>
<P style="TEXT-INDENT: 2em">如果系统没有mysql这个用户的话，最好做以下这步：</P>
<P style="TEXT-INDENT: 2em">useradd -M -o -r -d /var/lib/mysql -s /bin/bash -c "MySQL Server" -u 27 mysql </P>
<P style="TEXT-INDENT: 2em">然后我启动mysql</P>
<P style="TEXT-INDENT: 2em">/usr/local/mysql/bin/safe_mysqld &amp;</P>
<P style="TEXT-INDENT: 2em">ok，先看看mysql能否正常工作</P>
<P style="TEXT-INDENT: 2em">mysql -uroot mysql</P>
<P style="TEXT-INDENT: 2em">一般情况下都是不能正常链接数据库，错误提示一般为：</P>
<P style="TEXT-INDENT: 2em">ERROR 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) </P>
<P style="TEXT-INDENT: 2em">其实网上大家问的最多的都是整个问题，说什么链接不到mysqld.sock，其实大家不妨看看mysql的错误日志就明白怎么回事，我这里的错误日志是在</P>
<P style="TEXT-INDENT: 2em">/var/lib/mysql/*.err 你会发现mysql只所以不能启动，是因为/var/lib/mysql的权限不允许mysql服务访问，英文mysql默认是调用mysql用户来启动服务的，好了，既然知道是什么原因找到不能启动，那就简单了。我们只要</P>
<P style="TEXT-INDENT: 2em">chown -R mysql:mysql /var/lib/mysql 就行，如果还是启动不了，再慢慢调试权限，反正一般启动不了都是权限的问题。</P>
<P style="TEXT-INDENT: 2em">如果大家还是不能启动不了的话，那就用我的比较繁琐的权限的设置，反正我每次都是这么做的，一般不会有问题，见下：</P>
<P style="TEXT-INDENT: 2em">chown -R root /usr/local/mysql </P>
<P style="TEXT-INDENT: 2em">chgrp -R mysql /usr/local/mysql </P>
<P style="TEXT-INDENT: 2em">chown -R root /usr/local/mysql/bin </P>
<P style="TEXT-INDENT: 2em">chgrp -R mysql /usr/local/mysql/bin </P>
<P style="TEXT-INDENT: 2em">chgrp -R mysql /var/lib/mysql </P>
<P style="TEXT-INDENT: 2em">chmod 777 /var/lib/mysql </P>
<P style="TEXT-INDENT: 2em">chown -R root /var/lib/mysql/mysql </P>
<P style="TEXT-INDENT: 2em">chgrp -R mysql /var/lib/mysql/mysql </P>
<P style="TEXT-INDENT: 2em">chmod 777 /var/lib/mysql/mysql </P>
<P style="TEXT-INDENT: 2em">chown -R root /var/lib/mysql/mysql/* </P>
<P style="TEXT-INDENT: 2em">chgrp -R mysql /var/lib/mysql/mysql/* </P>
<P style="TEXT-INDENT: 2em">chmod 777 /var/lib/mysql/mysql/* </P>
<P style="TEXT-INDENT: 2em">chmod 777 /usr/local/mysql/lib/mysql/libmysqlclient.a</P>
<P style="TEXT-INDENT: 2em">做完上面的步骤，然后把你编译目录的一个脚本COPY过去</P>
<P style="TEXT-INDENT: 2em">cp support-files/mysql.server /etc/rc.d/init.d/mysqld</P>
<P style="TEXT-INDENT: 2em">chkconfig --add mysqld</P>
<P style="TEXT-INDENT: 2em">用ntsysv设置使mysql每次启动都能自动运行。</P>
<P style="TEXT-INDENT: 2em">好了，至此mysql安装完毕，你可以这样起动你的mysql服务</P>
<P style="TEXT-INDENT: 2em">/etc/rc.d/init.d/mysqld start</P>
<P style="TEXT-INDENT: 2em">下面这步比较关键，</P>
<P style="TEXT-INDENT: 2em">ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql</P>
<P style="TEXT-INDENT: 2em">ln -s /usr/local/mysql/include/mysql /usr/include/mysql</P>
<P style="TEXT-INDENT: 2em">大家可以不做这步，大可以在编译其他软件的时候自定义myslq的库文件路径，但我还是喜欢把库文件链接到默认的位置，这样你在编译类似PHP，Vpopmail等软件时可以不用指定mysql的库文件地址。</P>
<P style="TEXT-INDENT: 2em">2.安装Apache1.3.29。我没有选择安装Apache2.0是我对他还是不放心，因为网上最新公布的apache的漏洞基本上是针对2.0，当然大家可以自己选择安装相应的版本。我这里讲的都是采用DSO动态编译的方法编译Apache.</P>
<P style="TEXT-INDENT: 2em">至于有关apache的编译方法，可以参考我以前的文章《apache的静态/动态编译在apache+php+mysql的应用》 http://www.5ilinux.com/apache01.html </P>
<P style="TEXT-INDENT: 2em">软件获取：http://httpd.apache.org/</P>
<P style="TEXT-INDENT: 2em">tar zvxf apache_1.3.29.tar.gz</P>
<P style="TEXT-INDENT: 2em">cd apache_1.3.29</P>
<P style="TEXT-INDENT: 2em">修改src/include/httpd.h 增大最大线程数</P>
<P style="TEXT-INDENT: 2em">#define HARD_SERVER_LIMIT 256</P>
<P style="TEXT-INDENT: 2em">改成</P>
<P style="TEXT-INDENT: 2em">#define HARD_SERVER_LIMIT 2560</P>
<P style="TEXT-INDENT: 2em">保存退出编译apache</P>
<P style="TEXT-INDENT: 2em">./configure --prefix=/usr/local/apache --enable-module=so --enable-module=rewrite --enable-shared=max --htdocsdir=/var/www &amp;&amp;</P>
<P style="TEXT-INDENT: 2em">make &amp;&amp;</P>
<P style="TEXT-INDENT: 2em">make install</P>
<P style="TEXT-INDENT: 2em">#这里我们通过enable-module参数告诉设置脚本，我们需要启动so和rewrite模块，so模块是用来提DSO支持的apache核心模块，而rewrite模块则是用意实现地址重写的模块，由于rewrite模块需要DBM支持，如果在初次安装时没有编译进apache，以后需要用到时需要重新编译整个apache才可以实现。为此除非你可以确定以后不会用到rewrite模块，否则还是建议你在第一次编译的时候把rewrite模块编译好。</P>
<P style="TEXT-INDENT: 2em">enable-shared=max 这个参数的作用时编译apache时，把除了so以外的所有apache的标准模块都编译成DSO模块。而不是编译进apache核心内。</P>
<P style="TEXT-INDENT: 2em">好了安装apache很简单的哦，启动apache看看</P>
<P style="TEXT-INDENT: 2em">/usr/local/apache/bin/apachectl start</P>
<P style="TEXT-INDENT: 2em">然后用ie看http://你的服务器地址。应该能看到熟悉的apache羽毛标志。</P>
<P style="TEXT-INDENT: 2em">3.安装PHP4.3.4</P>
<P style="TEXT-INDENT: 2em">软件获取：http://www.php.net/downloads.php</P>
<P style="TEXT-INDENT: 2em">tar zvxf php-4.3.4.tar.gz</P>
<P style="TEXT-INDENT: 2em">cd php-4.3.4</P>
<P style="TEXT-INDENT: 2em">./configure \</P>
<P style="TEXT-INDENT: 2em">--prefix=/usr/local/php \</P>
<P style="TEXT-INDENT: 2em">--with-mysql=/usr/local/mysql \ </P>
<P style="TEXT-INDENT: 2em">--enable-force-cgi-redirect \</P>
<P style="TEXT-INDENT: 2em">--with-freetype-dir=/usr \</P>
<P style="TEXT-INDENT: 2em">--with-png-dir=/usr \</P>
<P style="TEXT-INDENT: 2em">--with-gd --enable-gd-native-ttf \</P>
<P style="TEXT-INDENT: 2em">--with-ttf \</P>
<P style="TEXT-INDENT: 2em">--with-gdbm \</P>
<P style="TEXT-INDENT: 2em">--with-gettext \</P>
<P style="TEXT-INDENT: 2em">--with-iconv \</P>
<P style="TEXT-INDENT: 2em">--with-jpeg-dir=/usr \</P>
<P style="TEXT-INDENT: 2em">--with-png \</P>
<P style="TEXT-INDENT: 2em">--with-zlib \</P>
<P style="TEXT-INDENT: 2em">--with-xml \</P>
<P style="TEXT-INDENT: 2em">--enable-calendar \</P>
<P style="TEXT-INDENT: 2em">--with-apxs=/usr/local/apache/bin/apxs</P>
<P style="TEXT-INDENT: 2em">make</P>
<P style="TEXT-INDENT: 2em">make install</P>
<P style="TEXT-INDENT: 2em">#我这里由于服务器需要用到GD库，所以加了一些支持GD的编译参数 ，GD直接用了redhat自带的GD库，大家没有安装的话可以从安装盘安装，注意除了安装GD以外，还要安装libjpeg，libpng等库文件。另外--with-mysql=/usr/local/mysql指向你安装mysql的路径。--with-apxs指向apache的apxs文件的路径。</P>
<P style="TEXT-INDENT: 2em">vi /usr/local/apache/conf/httpd.conf</P>
<P style="TEXT-INDENT: 2em">查找<IFMODULE mod_mime.c> </P>
<P style="TEXT-INDENT: 2em">在此范围添加 </P>
<P style="TEXT-INDENT: 2em">AddType application/x-httpd-php .php </P>
<P style="TEXT-INDENT: 2em">AddType application/x-httpd-php-source .phps </P>
<P style="TEXT-INDENT: 2em">然CPOPY PHP的配置文件</P>
<P style="TEXT-INDENT: 2em">cp ../php4.3.4/php.ini.dist /usr/local/php/lib/php.ini </P>
<P style="TEXT-INDENT: 2em">修改php.ini文件</P>
<P style="TEXT-INDENT: 2em">register_globals = On</P>
<P style="TEXT-INDENT: 2em">ok！重新启动一下apache服务器 </P>
<P style="TEXT-INDENT: 2em">/usr/local/apache/bin/apachectl restart </P>
<P style="TEXT-INDENT: 2em">然后写个php测试页info.php:内容如下 </P>
<P style="TEXT-INDENT: 2em">&lt;?php </P>
<P style="TEXT-INDENT: 2em">phpinfo(); </P>
<P style="TEXT-INDENT: 2em">?&gt; </P>
<P style="TEXT-INDENT: 2em">正常的话，应该能看到php的信息了，恭喜你的Apche+Mysql+PHP安装成功。</P>
<P style="TEXT-INDENT: 2em">好了写了这么多，希望对大家有所帮助！！！</P>
<P style="TEXT-INDENT: 2em">参看文档：</P>
<P style="TEXT-INDENT: 2em">apache的静态/动态编译在apache+php+mysql的应用 <A href="http://www.5ilinux.com/apache01.html">http://www.5ilinux.com/apache01.html</A>
</P><P style="TEXT-INDENT: 2em">版权声明：可以任意转载，转载时请务必以超链接形式标明文章原始出处和作者信息及本声明</P>
<P style="TEXT-INDENT: 2em">http://www.5ilinux.com/lamp01.html</P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/615270702008129101024248</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/615270702008129101024248</guid>
    <pubDate>Fri, 29 Feb 2008 10:10:24 +0800</pubDate>
    <dcterms:modified>2008-02-29T10:10:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[上？还是不上?]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200812463043605</link>
    <description><![CDATA[<div><P>由于特殊情况,原定于正月初六的上班时间改为正月十六.....</P>
<P>公司因为财政问题,暂时不用上班报道,欠大家的工资公司会尽快到账...</P>
<P>现在连我都觉得这里面多少有点莫名其妙了,公司上班的时间一推再推,难道自己也可以一忍再忍?不,我不可以,</P>
<P>我不是一个任人摆布或者任人宰割的人,公司这样做的缘故出在哪,如果是因为财政问题而导致一个正规注册的公司举步维艰,那我倒有点怀疑这里面所谓"正规"的含量了,因为对一个公司来说,仅仅七个人的工资,而且还是在长沙这种消费高于生产的城市,甚者,我们的工资差不多也就是长沙工资的平均水平.还那么有理由的粗气说着:因为公司的财政问题,难道没有理由让我们觉得我们被蒙骗了.</P>
<P>为什么公司到了每个月都不能按时发放工资,为什么等项目基本完工,公司却可以对我们的态度不理不睬,而只会逃避似的发个信息草草了事.</P>
<P>好了,不想多说什么,总之,我们上当了.</P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200812463043605</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200812463043605</guid>
    <pubDate>Sun, 24 Feb 2008 18:30:43 +0800</pubDate>
    <dcterms:modified>2008-02-24T18:30:43+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[我的手机丢了....]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200811645852295</link>
    <description><![CDATA[<div><P>哈哈...我的手机丢了...按照朋友的劝慰说:破财免灾吧.</P>
<P>老实说,这是我最心疼的一个手机,因为个性,也因为喜欢.</P>
<P>最不舍的是,当我把它装饰成属于我的时候,它却成了别人的囊中之物....</P>
<P>但是庆幸的是:因为爱它,我也把它的爱占为已有,不容别人侵犯.把它和它与我的故事锁成永恒........</P>
<P>人生的航向里......我想很多事情是在所难免的..</P>
<P>破财免灾吧.....</P>
<P>&nbsp;</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200811645852295</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200811645852295</guid>
    <pubDate>Sun, 24 Feb 2008 18:12:23 +0800</pubDate>
    <dcterms:modified>2008-02-24T18:13:51+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[C/s与B/s]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200811743155920</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机，并采用大型数据库系统，如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。</P>
<P style="TEXT-INDENT: 2em">B/Ｓ是Brower/Server的缩写，客户机上只要安装一个浏览器（Browser），如Netscape Navigator或Internet Explorer，服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Ｗeb Server 同数据库进行数据交互。</P>
<P style="TEXT-INDENT: 2em">C/S的优点是能充分发挥客户端ＰＣ的处理能力，很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个：</P>
<P style="TEXT-INDENT: 2em">只适用于局域网。而随着互联网的飞速发展，移动办公和分布式办公越来越普及，这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术，同时要对系统进行专门的设计来处理分布式的数据。</P>
<P style="TEXT-INDENT: 2em">客户端需要安装专用的客户端软件。首先涉及到安装的工作量，其次任何一台电脑出问题，如病毒、硬件损坏，都需要进行安装或维护。特别是有很多分部或专卖店的情况，不是工作量的问题，而是路程的问题。还有，系统软件升级时，每一台客户机需要重新安装，其维护和升级成本非常高。</P>
<P style="TEXT-INDENT: 2em">对客户端的操作系统一般也会有限制。可能适应于Win98, 但不能用于win2000或Windows XP。或者不适用于微软新的操作系统等等，更不用说Linux、Ｕnix等。</P>
<P style="TEXT-INDENT: 2em">B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用，客户端零维护。系统的扩展非常容易，只要能上网，再由系统管理员分配一个用户名和密码，就可以使用了。甚至可以在线申请，通过公司内部的安全认证（如ＣＡ证书）后，不需要人的参与，系统可以自动分配给用户一个账号进入系统。</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200811743155920</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200811743155920</guid>
    <pubDate>Sun, 17 Feb 2008 16:31:55 +0800</pubDate>
    <dcterms:modified>2008-02-17T16:31:55+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[ 今天]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/615270702008024103248531</link>
    <description><![CDATA[<div><P>记念一下今天的心情....</P>
<P>开心...</P></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/615270702008024103248531</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/615270702008024103248531</guid>
    <pubDate>Thu, 24 Jan 2008 10:32:48 +0800</pubDate>
    <dcterms:modified>2008-02-24T18:15:23+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[MTIR]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200802204413135</link>
    <description><![CDATA[<div>要用MTIR做东西，第一步，自然是引用到这个脚本了。但是，这个脚本他不会简单的被引用后，啥事也不做。只要引用了它，它会自动在页面 
onload 的时候分析当前页面是否有它要找的标记。他要寻找的标记有2种：<br><br>　　１、&lt;span 
_frame&gt;<br>　　２、&lt;a _target&gt;　&lt;form _target&gt;<br><br>　　但是你不用亲自加 
onload 
，MTIR自己会加的。所以脚本在没有onload完毕的时候，所有效果都不会有，如果那时你比较着急，点击了肯定都会有错误。这是一个细节。<br><br>　　然后说说作用。作用呢 
&lt;span _frame&gt;&lt;/span&gt; 
表示此处为MTIR的一个动态区域，这个标记是必须有的。当然为了识别，必须有一个id。只要存在这样的&lt;span&gt;，那么在MTIR中你就可以把它当成一个frame处理。<br><br>　　就像链接 
&lt;a href='list.php' target=frame&gt;，但是比较特殊 &lt;a href='list.php' 
_target=frame&gt;。要多加一个“_”<br>，写成“_target”。只有这么写 
MTIR才会认为你要把这个链接打开到那个MTIR的Frame中，而不是通常的一个frame，实现页面内部的无刷新。因此...MTIR实际上就是那么简单，设置一个显示区域 
&lt;span id=frame1 _frame&gt;&lt;/span&gt; 然后在这个区域打开一个页面 &lt;a 
href='list.php'<br>_target=frame1&gt;链接&lt;/a&gt; 
<br><br>　　当然，同样，&lt;form&gt;一个表单显示的结果也可以显示在这个MTIR的frame中，方法依然是 &lt;form 
target='frame'&gt; 修改成 &lt;form 
_target='frame'&gt;。POST还是GET不限，都可以。因此对于MTIR的基本使用中，你不需要写任何的JS就可以实现无刷新的效果，这就是MTIR的特点 
<br><br>　　当然，MTIR本身还是附加了一些js供使用者使用。比如，任何一个你已经声明的MTIR frame中你都可以这么用 
frame1.location('list.php')。注意不是 frame1.location='list.php' ，而是一个函数 
frame1.location('list.php')。这是MTIR自动为所有页面中的MTIR 
frame设置的函数。是的，作用自然和点击链接 &lt;a href='xxx' 
_target=frame1&gt;的效果是一样的。这是为了有些效果需要用JS设计的时候准备的。当然 frame1.location('list.php') 
这么写不符合HTML标准。 document.getElementById('frame1').location('list.php'); 
这么写才是标准的写法。尽管对IE来说，不标准也可以，但是养成习惯还是很好地。<br><br>　　考虑到有些人喜欢页面一开启的时候，就打开某某MTIR 
frame，因此自己可以设置定义1个函数，这个函数的函数名是固定的function frame_init()&nbsp;&nbsp;<br>　　如：<br><br>function 
frame_init() {<br>document.getElementById('dis').location('list.php');<br>} 
<br><br>　　只要有这个函数，MTIR会在onload的时候自动运行这个函数。如果没有，当然就不运行了，呵呵。同时，你自己的一些onload的附加的也可以写在这里，反正不用白不用。这个函数中的内容都会每次onload的时候被运行。<br><br>　　然后....为了附加一些类似Ajax的效果，当然自己可以额外的附加一些小东东。当然这是MTIR功能之外的，纯属HTML本身的效果，你可以随意用。比如 
dis3.location('prg2.php'); 的时候 
document.getElementById('dis3').innerHTML='Loading...'。 这样可以显示一个Loading... 
看起来蛮帅的。<br><br>　　然后...说说额外的，MTIR允许嵌套。也就是说你打开的MTIR页面中还允许包含&lt;span 
_frame&gt;标记和&lt;form 
_target&gt;表单提交等任何MTIR允许的内容。这样，可以让MTIR在一个页面中互动起来，非常的灵活。<br><br>　　最后说说链接中的内容，&lt;a 
href='list.php' 
_target='frame1'&gt;，那么list.php中返回的内容要有什么才可以符合呢？可以说...没限制，写什<br>么都可以。是的，只是不允许远程调用 
。你不能 &lt;a href=http://www.sohu.com&gt;。list.php中最好有&lt;body&gt; 。但是没有也没关系，MTIR只会获取 list.php 
&lt;body&gt;中的内容。如果你的list.php中没有表单&lt;form&gt;的话可以不写&lt;body&gt;，如果有&lt;form&gt;必须写&lt;body&gt;。如果你要附加什么JS命令，可以附加在&lt;body&gt;前，还有如果附加什么&lt;meta&gt;设置也可以附加在&lt;body&gt;。<br><br>　　MTIR不存在Ajax的那种内码冲突，主页是UTF8的子页面是GBK的依然可以。但是你最好..别那么做，自己做东西总要有个内码统一吧。但是至少不用像制作Ajax那样不支持中文的问题。你可以在子页面生成的时候发送 
header("content-Type:text/html;charset=utf-8");。<br><br>　　还有最后一个，子页面可以不用写样式表，样式表会跟随主页自动生效。<br></div>]]></description>
	    <author><![CDATA[Stone]]></author>
	    <comments>http://zzqianger.blog.163.com/blog/static/61527070200802204413135</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://zzqianger.blog.163.com/blog/static/61527070200802204413135</guid>
    <pubDate>Tue, 22 Jan 2008 12:44:13 +0800</pubDate>
    <dcterms:modified>2008-01-22T13:40:05+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[prototype]]></title>	
    <link>http://zzqianger.blog.163.com/blog/static/61527070200802201429227</link>
    <description><![CDATA[<div><h3>prototype.js是什么?</h3>
<p>更多参考：http://thinhunan.cnblogs.com/archive/2006/04/01/DeveloperNotesForPrototype.html<br></p><p>万一你没有使用过大名鼎鼎的prototype.js，那么让我来告诉你，<a href="http://prototype.conio.net/">prototype.js</a>是由<a href="http://www.conio.net/">Sam 
Stephenson</a>写的一个javascript类库。这个构思奇妙，而且兼容标准的类库，能帮助你轻松建立有高度互动的web2.0特性的富客户端页面。</p>
<p>如果你最近尝试使用它，你大概了解到文档并不是作者的一个强项。和在我以前使用这个类库的不少开发者一样，一开始，我不得不一头扎进阅读prototype.js的源代码和实验它的功能中。我想，在我学习完它之后，把我学到的东西分享给大家是件不错的事。 
</p>
<p>同时，在本文中，我也将提供一个关于这个类库提供的objects,classes,functions,extensions这对东东的<a href="#Reference">非官方参考</a></p>
<p>在阅读这个文档时，熟悉Ruby的开发者将会注意到Ruby的一些内建类和本类库扩展实现之间非常相似。 </p>
<h3>相关文章</h3>
<p>Advanced <a href="http://www.sergiopereira.com/articles/advjs.html">JavaScript guide</a>. 
</p><!-- ************************************************************************************************************************************* -->
<h3>一些实用的函数</h3>
<p>这个类库带有很多预定义的对象和实用函数，这些东东的目的显然是把你从一些重复的打字中解放出来 。 </p><!-- ------------------------------------------------------------------------------------------- -->
<h4>使用$()方法</h4>
<p>$() 方法是在DOM中使用过于频繁的 document.getElementById() 
方法的一个便利的简写，就像这个DOM方法一样，这个方法返回参数传入的id的那个元素。</p>
<p>比起DOM中的方法，这个更胜一筹。你可以传入多个id作为参数然后 $() 返回一个带有所有要求的元素的一个 Array 对象。</p><pre>&lt;HTML&gt;<br>&lt;HEAD&gt;<br>&lt;TITLE&gt; Test Page &lt;/TITLE&gt;<br>&lt;script src="prototype-1.3.1.js"&gt;&lt;/script&gt;<br>&lt;script&gt;<br>function test1()<br>{<br>var d = $('myDiv');<br>alert(d.innerHTML);<br>}<br>function test2()<br>{<br>var divs = $('myDiv','myOtherDiv');<br>for(i=0; i&lt;divs.length; i++)<br>{<br>alert(divs[i].innerHTML);<br>}<br>}<br>&lt;/script&gt;<br>&lt;/HEAD&gt;<br>&lt;BODY&gt;<br>&lt;div id="myDiv"&gt;<br>&lt;p&gt;This is a paragraph&lt;/p&gt;<br>&lt;/div&gt;<br>&lt;div id="myOtherDiv"&gt;<br>&lt;p&gt;This is another paragraph&lt;/p&gt;<br>&lt;/div&gt;<br>&lt;input type="button" value=Test1 onclick="test1();"&gt;&lt;br&gt;<br>&lt;input type="button" value=Test2 onclick="test2();"&gt;&lt;br&gt;<br>&lt;/BODY&gt;<br>&lt;/HTML&gt;</pre>
<p>另外一个好处是，这个函数能传入用string表示的对象ID，也可以传入对象本身，这样，在建立其它能传两种类型的参数的函数时非常有用。</p><!-- ------------------------------------------------------------------------------------------- -->
<h4>使用$F()函数</h4>
<p>$F()函数是另一个大收欢迎的“快捷键”，它能用于返回任何表单输入控件的值，比如text box,drop-down 
list。这个方法也能用元素id或元素本身做为参数。 </p><pre>&lt;script&gt;<br>function test3()<br>{<br>alert(  <span>$F('userName')</span>  );<br>}<br>&lt;/script&gt;<br>&lt;input type="text" id="userName" value="Joe Doe"&gt;&lt;br&gt;<br>&lt;input type="button" value=Test3 onclick="test3();"&gt;&lt;br&gt;<br><!-- ------------------------------------------------------------------------------------------- --></pre>
<h4>使用<span>$A()</span>函数</h4>
<p>$A()函数能把它接收到的单个的参数转换成一个Array对象。</p>
<p>这个方法，结合被本类库扩展了的Array类，能方便的把任何的可枚举列表转换成或拷贝到一个Array对象。一个推荐的用法就是把DOM Node 
Lists转换成一个普通的Array对象，从而更有效率的进行遍历，请看下面的例子。</p><pre>&lt;script&gt;<br>function showOptions(){<br>var someNodeList = $('lstEmployees').getElementsByTagName('option');<br>var nodes = $A(someNodeList);<br>nodes.each(function(node){<br>alert(node.nodeName + ': ' + node.innerHTML);<br>});<br>}<br>&lt;/script&gt;<br>&lt;select id="lstEmployees" size="10" &gt;<br>&lt;option value="5"&gt;Buchanan, Steven&lt;/option&gt;<br>&lt;option value="8"&gt;Callahan, Laura&lt;/option&gt;<br>&lt;option value="1"&gt;Davolio, Nancy&lt;/option&gt;<br>&lt;/select&gt;<br>&lt;input type="button" value="Show the options" onclick="showOptions();" &gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>使用&nbsp;<span>$H()</span> 函数</h4>
<p>$H()函数把一些对象转换成一个可枚举的和联合数组类似的Hash对象。</p><pre>&lt;script&gt;<br>function testHash()<br>{<br>//let's create the object<br>var a = {<br>first: 10,<br>second: 20,<br>third: 30<br>};<br>//now transform it into a hash<br>var h = <span>$H(a)</span>;<br>alert(h.toQueryString()); //displays: first=10&amp;second=20&amp;third=30<br>}<br>&lt;/script&gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>使用<span>$R()</span>函数</h4>
<p>$R()是new ObjectRange(lowBound,upperBound,excludeBounds)的缩写。</p>
<p>跳到<a href="#Reference.ObjectRange">ObjectRange</a> 类文档可以看到一个关于此类的完整描述. 
此时，我们还是先来看一个例子以展示这个缩写能代替哪些方法吧。其它相关的一些知识可以在<a href="#Reference.Enumerable">Enumerable</a> 对象文档中找到。</p><pre>&lt;script&gt;<br>function demoDollar_R(){<br>var range = <span>$R(10, 20, false)</span>;<br>range.each(function(value, index){<br>alert(value);<br>});<br>}<br>&lt;/script&gt;<br>&lt;input type="button" value="Sample Count" onclick="demoDollar_R();" &gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>使用<span>Try.these()</span>函数</h4>
<p><tt>Try.these()</tt> 方法使得实现当你想调用不同的方法直到其中的一个成功正常的这种需求变得非常容易， 
他把一系列的方法作为参数并且按顺序的一个一个的执行这些方法直到其中的一个成功执行，返回成功执行的那个方法的返回值。</p>
<p>在下面的例子中， <tt>xmlNode.text</tt>在一些浏览器中好用，但是<tt>xmlNode.textContent</tt>在另一些浏览器中正常工作。 使用<tt>Try.these()</tt>方法我们可以得到正常工作的那个方法的返回值。</p>
<p>&lt;script&gt;<br>function getXmlNodeValue(xmlNode){<br>&nbsp;&nbsp;&nbsp; return 
Try.these(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() {return xmlNode.text;},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function() 
{return xmlNode.textContent;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>}<br>&lt;/script&gt;<br>&nbsp;&nbsp; </p>
<p><!-- ************************************************************************************************************************************* --></p>
<h3><span>Ajax</span>对象</h3>
<p>上面提到的共通方法非常好，但是面对它吧，它们不是最高级的那类东西。它们是吗？你很可能自己编写了这些甚至在你的脚本里面有类似功能的方法。但是这些方法只是冰山一角。</p>
<p>我很肯定你对prototype.js感兴趣的原因很可能是由于它的AJAX能力。所以让我们解释当你需要完成AJAX逻辑的时候，这个包如何让它更容易。</p>
<p><tt>Ajax</tt> 对象是一个预定义对象，由这个包创建，为了封装和简化编写<a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29" target="_top">AJAX</a> 
功能涉及的狡猾的代码。 这个对象包含一系列的封装AJAX逻辑的类。我们来看看其中几个类。<!-- ------------------------------------------------------------------------------------------- --> 

</p><h4>使用<span>Ajax.Request</span>类</h4>
<p>如果你不使用任何的帮助程序包，你很可能编写了整个大量的代码来创建<tt>XMLHttpRequest</tt>对象并且异步的跟踪它的进程， 然后解析出响应 
然后处理它。当你不需要支持多于一种类型的浏览器时你会感到非常的幸运。</p>
<p>为了支持 AJAX 功能。这个包定义了 <tt>Ajax.Request </tt>类。</p>
<p>假如你有一个应用程序可以通过url <span><em>http://yoursever/app/get_sales?empID=1234&amp;year=1998</em></span>与服务器通信。它返回下面这样的XML 
响应。</p><pre>&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br>&lt;ajax-response&gt;<br>&lt;response type="object" id="productDetails"&gt;<br>&lt;monthly-sales&gt;<br>&lt;employee-sales&gt;<br>&lt;employee-id&gt;1234&lt;/employee-id&gt;<br>&lt;year-month&gt;1998-01&lt;/year-month&gt;<br>&lt;sales&gt;$8,115.36&lt;/sales&gt;<br>&lt;/employee-sales&gt;<br>&lt;employee-sales&gt;<br>&lt;employee-id&gt;1234&lt;/employee-id&gt;<br>&lt;year-month&gt;1998-02&lt;/year-month&gt;<br>&lt;sales&gt;$11,147.51&lt;/sales&gt;<br>&lt;/employee-sales&gt;<br>&lt;/monthly-sales&gt;<br>&lt;/response&gt;<br>&lt;/ajax-response&gt;<br></pre>
<p>用 <tt>Ajax.Request</tt>对象和服务器通信并且得到这段XML是非常简单的。下面的例子演示了它是如何完成的。</p><pre>&lt;script&gt;<br>function searchSales()<br>{<br>var empID = $F('lstEmployees');<br>var y = $F('lstYears');<br>var url = 'http://yoursever/app/get_sales';<br>var pars = 'empID=' + empID + '&amp;year=' + y;<br><div><br>var myAjax = new Ajax.Request(<br>url,<br>{<br>method: 'get',<br>parameters: pars,<br>onComplete: showResponse<br>});<br></div><br>}<br>function showResponse(originalRequest)<br>{<br>//put returned XML in the textarea<br>$('result').value = originalRequest.responseText;<br>}<br>&lt;/script&gt;<br>&lt;select id="lstEmployees" size="10" onchange="searchSales()"&gt;<br>&lt;option value="5"&gt;Buchanan, Steven&lt;/option&gt;<br>&lt;option value="8"&gt;Callahan, Laura&lt;/option&gt;<br>&lt;option value="1"&gt;Davolio, Nancy&lt;/option&gt;<br>&lt;/select&gt;<br>&lt;select id="lstYears" size="3" onchange="searchSales()"&gt;<br>&lt;option selected="selected" value="1996"&gt;1996&lt;/option&gt;<br>&lt;option value="1997"&gt;1997&lt;/option&gt;<br>&lt;option value="1998"&gt;1998&lt;/option&gt;<br>&lt;/select&gt;<br>&lt;br&gt;&lt;textarea id=result cols=60 rows=10 &gt;&lt;/textarea&gt;<br></pre>
<p>你注意到传入 <tt>Ajax.Request</tt>构造方法的第二个对象了吗？ 参数<tt>{method: 'get', parameters: pars, onComplete: showResponse}</tt> 
表示一个匿名对象的真实写法。他表示你传入的这个对象有一个名为 <tt>method</tt> 值为 <tt>'get'的属性，</tt>另一个属性名为 <tt>parameters</tt> 
包含HTTP请求的查询字符串，和一个<tt>onComplete</tt> 属性/方法包含函数<tt>showResponse</tt>。 </p>
<p>还有一些其它的属性可以在这个对象里面定义和设置，如 <tt>asynchronous</tt>，可以为<tt>true</tt> 或 <tt>false</tt> 来决定AJAX对服务器的调用是否是异步的（默认值是 
<tt>true</tt>）。</p>
<p>这个参数定义AJAX调用的选项。在我们的例子中，在第一个参数通过HTTP GET命令请求那个url，传入了变量 <tt>pars</tt>包含的查询字符串， <tt>Ajax.Request 
</tt>对象在它完成接收响应的时候将调用<tt>showResponse</tt> 方法。</p>
<p>也许你知道， <tt>XMLHttpRequest</tt>在HTTP请求期间将报告进度情况。这个进度被描述为四个不同阶段：<span><em>Loading</em></span>, <span><em>Loaded</em></span>, <span><em>Interactive</em></span>, 或 <span><em>Complete</em></span>。你可以使 <tt>Ajax.Request</tt> 
对象在任何阶段调用自定义方法 ，<span><em>Complete</em></span> 
是最常用的一个。想调用自定义的方法只需要简单的在请求的选项参数中的名为 <tt>onXXXXX</tt> 
属性/方法中提供自定义的方法对象。 就像我们例子中的 <tt>onComplete</tt> 
。你传入的方法将会被用一个参数调用，这个参数是 <tt>XMLHttpRequest</tt> 
对象自己。你将会用这个对象去得到返回的数据并且或许检查包含有在这次调用中的HTTP结果代码的 <tt>status</tt> 
属性。</p>
<p>还有另外两个有用的选项用来处理结果。我们可以在<tt>onSuccess</tt> 
选项处传入一个方法，当AJAX无误的执行完后调用， 相反的，也可以在<tt>onFailure</tt>选项处传入一个方法，当服务器端出现错误时调用。正如<tt>onXXXXX</tt> 选项传入的方法一样，这两个在被调用的时候也传入一个带有AJAX请求的<tt>XMLHttpRequest对象。</tt></p>
<p>我们的例子没有用任何有趣的方式处理这个 XML响应， 
我们只是把这段XML放进了一个文本域里面。对这个响应的一个典型的应用很可能就是找到其中的想要的信息，然后更新页面中的某些元素， 
或者甚至可能做某些XSLT转换而在页面中产生一些HTML。</p>
<p>&nbsp;在1.4.0版本中，一种新的事件回传外理被引入。如果你有一段代码总是要为一个特殊的事件执行，而不管是哪个AJAX调用引发它，那么你可以使用新的<a href="#Ajax.Responders">Ajax.Responders</a>对象。</p>
<p>假设你想要在一个AJAX调用正在运行时，显示一些提示效果，像一个不断转动的图标之类的，你可以使用两个全局事件Handler来做到，其中一个在第一个调用开始时显示图标，另一个在最后一个调用完成时隐藏图标。看下面的例子。</p><pre>&lt;script&gt;<br>var myGlobalHandlers = {<br>onCreate: function(){<br>Element.show('systemWorking');<br>},<br>onComplete: function() {<br>if(Ajax.activeRequestCount == 0){<br>Element.hide('systemWorking');<br>}<br>}<br>};<br><span>Ajax.Responders.register(myGlobalHandlers);</span><br>&lt;/script&gt;<br>&lt;div id='systemWorking'&gt;&lt;img src='spinner.gif'&gt;Loading...&lt;/div&gt;<br></pre>
<p>更完全的解释，请参照 <a title="4.14.&nbsp;Ajax.Request 类" href="#ajax_request_reference">Ajax.Request 参考</a> 和 <a title="4.15.&nbsp;options 参数对象" href="#options_reference">Ajax选项参考</a>。</p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>使用<span>Ajax.Updater</span>类</h4>
<p>如果你的服务器的另一端返回的信息已经是HTML了，那么使用这个程序包中 <tt>Ajax.Updater</tt> 
类将使你的生活变得更加得容易。用它你只需提供哪一个元素需要被AJAX请求返回的HTML填充就可以了，例子比我写说明的更清楚。&nbsp;</p><pre>&lt;script&gt;<br>function getHTML()<br>{<br>var url = 'http://yourserver/app/getSomeHTML';<br>var pars = 'someParameter=ABC';<br><div><br>var myAjax = new Ajax.Updater(<br>'placeholder',<br>url,<br>{<br>method: 'get',<br>parameters: pars<br>});<br></div><br>}<br>&lt;/script&gt;<br>&lt;input type=button value=GetHtml onclick="getHTML()"&gt;<br>&lt;div id="placeholder"&gt;&lt;/div&gt;<br></pre>
<p>你可以看到，这段代码比前面的例子更加简洁，不包括 <tt>onComplete</tt> 
方法，但是在构造方法中传入了一个元素id。 我们来稍稍修改一下代码来描述如何在客户端处理服务器段错误成为可能。</p>
<p>我们将加入更多的选项， 指定处理错误的一个方法。这个是用 <tt>onFailure</tt> 选项来完成的。我们也指定了一个 
<tt>placeholder</tt> 
只有在成功请求之后才会被填充。为了完成这个目的我们修改了第一个参数从一个简单的元素id到一个带有两个属性的对象， <tt>success</tt> (一切OK的时候被用到) 和 <tt>failure</tt> 
(有地方出问题的时候被用到) 在下面的例子中没有用到<tt>failure</tt>属性，而仅仅在 <tt>onFailure</tt> 处使用了 <tt>reportError</tt> 方法。</p>
<p>&lt;script&gt;<br>function getHTML()<br>{<br>var url = 
'http://yourserver/app/getSomeHTML';<br>var pars = 'someParameter=ABC';<br></p><pre><div><br>var myAjax = new Ajax.Updater(<br>{success: 'placeholder'},<br>url,<br>{<br>method: 'get',<br>parameters: pars,<br>onFailure: reportError<br>});<br></div><br>}<br>function reportError(request)<br>{<br>alert('Sorry. There was an error.');<br>}<br>&lt;/script&gt;<br>&lt;input type=button value=GetHtml onclick="getHTML()"&gt;<br>&lt;div id="placeholder"&gt;&lt;/div&gt;<br></pre>
<p>如果你的服务器逻辑是连同HTML 标记返回JavaScript 代码， <tt>Ajax.Updater</tt>对象可以执行那段JavaScript代码。为了使这个对象对待响应为JavaScript，你只需在最后参数的对象构造方法中简单加入<tt>evalScripts: 
true</tt>属性。但是值得提醒的是，像这个选项名evalScripts暗示的，这些脚本会被执行，但是它们不会被加入到Page的脚本中。“有什么区别？”，可能你会这样问。我们假定请求地址返回的东东像这样：</p><pre>&lt;script language="javascript" type="text/javascript"&gt;<br>function sayHi(){<br>alert('Hi');<br>}<br>&lt;/script&gt;<br>&lt;input type=button value="Click Me" onclick="sayHi()"&gt;<br></pre>
<p>如果你以前这样尝试过，你知道这些脚本不会如你所期望的那样工作，原因是这段脚本会被执行，但像上面这样的脚本执行并不会创建一个名叫sayHi的函数，它什么也不做。如果要创建一个函数，我们应当把代码改成下面这个样子：</p><pre>&lt;script language="javascript" type="text/javascript"&gt;<br><div>sayHi = function(){<br>alert('Hi');<br>};</div><br>&lt;/script&gt;<br>&lt;input type=button value="Click Me" onclick="sayHi()"&gt;<br></pre>
<p>为什么我们在上面的代码中不使用var关键字来声明这个变量呢（指sayHi&nbsp;），因为那样做创建出来的函数将只是当前脚本块的一个局部变量（至少在IE中是这样）。不写var关键字，创建出来的对象的作用域就是我们所期望的window。</p>
<p>更多相关知识，请参看&nbsp; <a href="#Ajax.Updater">Ajax.Updater reference</a> 和<a href="#Ajax.options">options reference</a>. </p>
<h3>枚举... 噢!噢!</h3>
<p>你知道，我们都是这样来做循环的，建一个Array，用elements组织它们，再建一个循环结构（例如for,foreach,while)通过index数字来访问每一个element，再用这个element做一些动作。 
</p>
<p>当你想到这时，你会发现几乎每次写循环代码你都会迟早用到一个Array。那么，如果Array对象能够提供更多的功能给它们的迭代器使用不是很爽吗？确实是这样，事实上很多的编程语言都在它们的Array或其它类似的结构中（如Collections,Lists）提供一些这样的功能。 
</p>
<p>现在好了，prototype.js了给我们一个 <a href="#Reference.Enumerable">Enumerable</a>对象，它实现了很多和可迭代数据进行交互的窍门。和原有的JS对象相比prototype.js更上一层楼，它对<a href="#Reference.Array"><span>Array</span> 类s</a>扩展了所有枚举要用的函数。 </p>
<h4>循环, Ruby样式的</h4>
<p>在标准的javascript中，如果你想把一个array中的所有elements显示出来，你可以像下面代码这样写得很好： </p><pre>&lt;script&gt;<br>function showList(){<br>var simpsons = ['Homer', 'Marge', 'Lisa', 'Bart', 'Meg'];<br><div>            for(i=0;i&lt;simpsons.length;i++){<br>alert(simpsons[i]);<br>}</div><br>}<br>&lt;/script&gt;<br>&lt;input type="button" value="Show List" onclick="showList();" &gt;<br></pre>
<p>使用我们新的最好的朋友，prototype.js，我们可以把它生写成这样 </p><pre>      function showList(){<br>var simpsons = ['Homer', 'Marge', 'Lisa', 'Bart', 'Meg'];<br><div>            simpsons.each( function(familyMember){<br>alert(familyMember);<br>});</div><br>}<br></pre>
<p>你可能会想“非常奇怪的方式...相对旧的，这种语法太怪异了”。哦，在上面的例子，确实什么也没有，在这个简单得要死例子中，也没有改变太多啊，尽管如此，请继续读下去。 
</p>
<p>在继续下面内容之前，你注意到那个被做为一个参数传递给each函数的函数？我们把它理解成迭代器函数。 </p>
<h4>Your arrays on steroids</h4>
<p>就如我们上面提到的，把你的Array中的elements当成相同的类型使用相同的属性和函数是很通用(Common,不知该翻译成通用还是庸俗)的。让我们看看怎么样利用我们新的马力强劲的Arrays的迭代功能吧。 
</p>
<p>依照标准找到一个element。 
</p><pre>&lt;script&gt;<br>function findEmployeeById(emp_id){<br>var listBox = $('lstEmployees')<br>var options = listBox.getElementsByTagName('option');<br>options = $A(options);<br>var opt = options.<span>find</span>( <strong>function(employee){<br>return <span>(employee.value == emp_id)</span>;<br>}</strong>);<br>alert(opt.innerHTML); //displays the employee name<br>}<br>&lt;/script&gt;<br>&lt;select id="lstEmployees" size="10" &gt;<br>&lt;option value="5"&gt;Buchanan, Steven&lt;/option&gt;<br>&lt;option value="8"&gt;Callahan, Laura&lt;/option&gt;<br>&lt;option value="1"&gt;Davolio, Nancy&lt;/option&gt;<br>&lt;/select&gt;<br>&lt;input type="button" value="Find Laura" onclick="findEmployeeById(8);" &gt;<br></pre>
<p>现在我们再下一城，看看如何过滤一个Array中的元素，从每个元素中得到我们想要的成员。 
</p><pre>&lt;script&gt;<br>function showLocalLinks(paragraph){<br>paragraph = $(paragraph);<br>var links = $A(paragraph.getElementsByTagName('a'));<br>//find links that do not start with 'http'<br>var localLinks = links.<span>findAll</span>( function(link){<br>var start = link.href.substring(0,4);<br>return start !='http';<br>});<br>//now the link texts<br>var texts = localLinks.<span>pluck('innerHTML')</span>;<br>//get them in a single string<br>var result = texts.<span>inspect()</span>;<br>alert(result);<br>}<br>&lt;/script&gt;<br>&lt;p id="someText"&gt;<br>This &lt;a href="http://othersite.com/page.html"&gt;text&lt;/a&gt; has<br>a &lt;a href="#localAnchor"&gt;lot&lt;/a&gt; of<br>&lt;a href="#otherAnchor"&gt;links&lt;/a&gt;. Some are<br>&lt;a href="http://wherever.com/page.html"&gt;external&lt;/a&gt;<br>and some are &lt;a href="#someAnchor"&gt;local&lt;/a&gt;<br>&lt;/p&gt;<br>&lt;input type=button value="Find Local Links" onclick="showLocalLinks('someText')"&gt;<br></pre>
<p>上面的代码仅仅是一点小小的实践让人爱上这种语法。请参看 <a href="#Reference.Enumerable">Enumerable</a>和<a href="#Reference.Array">Array</a>的所有函数 </p>
<p><!-- ************************************************************************************************************************************* --></p>
<hr>

<p><a></a>&nbsp;</p>
<h3>prototype.js参考</h3>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>JavaScript类扩展</h4>
<p>prototype.js 类库实现强大功能的一种途径是扩展已有的JavaScript 类。 </p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>对 <span>Object的扩展</span></h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>extend(destination, source)</td>
<td><nobr>static</nobr></td>
<td>destination: any object, source: any object</td>
<td>提供一种通过拷贝所有源以象属性和函数到目标函数实现继承的方法</td></tr>
<tr>
<td>inspect(targetObj)</td>
<td>static</td>
<td>targetObj: any object</td>
<td>返回可读性好关于目标对象的文字描述，如果对象实例没有定义一个inspect函数，默认返回toString函数的值。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4><span>对Number的扩展</span></h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th><nobr>Kind</nobr></th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>toColorPart()</td>
<td><nobr>instance</nobr></td>
<td>(none)</td>
<td>返回数字的十六进制表示形式。在把一个RGB数字转换成HTML表现形式时很有用。</td></tr>
<tr>
<td>succ()</td>
<td>instance</td>
<td>(none)</td>
<td>&nbsp;返回下一个数字，这个方法可用于迭代调用场景中。 </td></tr>
<tr>
<td>times(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(index)</td>
<td>Calls the <span>iterator</span> function 
repeatedly passing the current index in the <span>index</span> 
argument. 反复调用iterator函数并传递当前index到iterator的index参数。 
</td></tr></tbody></table></p>
<p>下面的例子用提示框显示0-9。 </p><pre>&lt;script&gt;<br>function demoTimes(){<br>var n = 10;<br>n.times(function(index){<br>alert(index);<br>});<br>/***************************<br>* you could have also used:<br>*           (10).times( .... );<br>***************************/<br>}<br>&lt;/script&gt;<br>&lt;input type=button value="Test Number.times()" onclick="demoTimes()"&gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>对 <span>Function扩展</span></h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>bind(object)</td>
<td><nobr>instance</nobr></td>
<td>object: the object that owns the method</td>
<td>返回function的实例，这个实例和源function的结构一样，但是它已被绑定给了参数中提供的object，就是说，function中的this指针指向参数object。</td></tr>
<tr>
<td>bindAsEventListener(object)</td>
<td>instance</td>
<td>object: the object that owns the method</td>
<td>用法和上面的bind一样，区别在于用来绑定事件。</td></tr></tbody></table></p>
<p>让我们看看如何运用这些扩展。 </p><pre>&lt;input type=checkbox id=myChk value=1&gt; Test?<br>&lt;script&gt;<br>//declaring the class<br>var CheckboxWatcher = Class.create();<br>//defining the rest of the class implementation<br>CheckboxWatcher.prototype = {<br>initialize: function(chkBox, message) {<br>this.chkBox = $(chkBox);<br>this.message = message;<br>//assigning our method to the event<br><div><br>this.chkBox.onclick =<br>this.showMessage.bindAsEventListener(this);<br></div><br>},<br>showMessage: function(evt) {<br>alert(this.message + ' (' + evt.type + ')');<br>}<br>};<br>var watcher = new CheckboxWatcher('myChk', 'Changed');<br>&lt;/script&gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4><span>对String的扩展</span></h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>stripTags()</td>
<td>instance</td>
<td>(none)</td>
<td>返回一个把所有的HTML或XML标记都移除的字符串。</td></tr>
<tr>
<td>stripScripts()</td>
<td><nobr>instance</nobr></td>
<td>(none)</td>
<td>返回一个把所有的script都移除的字符串。</td></tr>
<tr>
<td>escapeHTML()</td>
<td>instance</td>
<td>(none)</td>
<td>返回一个把所有的HTML标记合适的转义掉的字符串。</td></tr>
<tr>
<td>unescapeHTML()</td>
<td>instance</td>
<td>(none)</td>
<td><span>escapeHTML()的反转。</span></td></tr>
<tr>
<td>extractScripts()</td>
<td>instance</td>
<td>(none)</td>
<td>返回一个包含在string中找到的所有&lt;script&gt;的数组。</td></tr>
<tr>
<td>evalScripts()</td>
<td>instance</td>
<td>(none)</td>
<td>执行在string中找到的所有&lt;script&gt;。</td></tr>
<tr>
<td>toQueryParams()</td>
<td>instance</td>
<td>(none)</td>
<td>把querystring分割才一个用parameter 
name做index的联合Array，更像一个hash。</td></tr>
<tr>
<td>parseQuery()</td>
<td>instance</td>
<td>(none)</td>
<td><span>和toQueryParams()一样</span>.</td></tr>
<tr>
<td>toArray()</td>
<td>instance</td>
<td>(none)</td>
<td>把字符串转换成字符数组.</td></tr>
<tr>
<td>camelize()</td>
<td>instance</td>
<td>(none)</td>
<td>转换一个以连字符连接的字符串成一个骆驼法样式的字符串。比如，这个函数在写代码时，把它做为一个样式工具使用是很有用的。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>对&nbsp; <span>Array</span>的扩展</h4>
<p>因为array扩展于enumerable，所以所有enumberable对象的函数，array都是可以使用的，除此之外，下面的这些也是已经实现了的。 
</p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>clear()</td>
<td><nobr>instance</nobr></td>
<td>(none)</td>
<td>清空。</td></tr>
<tr>
<td>compact()</td>
<td>instance</td>
<td>(none)</td>
<td>返回一个不包括源array中null或undefined元素的array,此方法不改变源array。</td></tr>
<tr>
<td>first()</td>
<td>instance</td>
<td>(none)</td>
<td>返回array的第一个对象。</td></tr>
<tr>
<td>flatten()</td>
<td>instance</td>
<td>(none)</td>
<td>通过递归组合array每个元素的子元素（如果该元素也是array)来返回一个“扁平的”一维的array。</td></tr>
<tr>
<td>indexOf(value)</td>
<td>instance</td>
<td>value: what you are looking for.</td>
<td>返回给出数字位置（从０算起）的元素，如果在该位置没有找到对象，返回-1。 </td></tr>
<tr>
<td>inspect()</td>
<td>instance</td>
<td>(none)</td>
<td>重载inspect(),返回更好格式的反映Array每个元素的字符描述。</td></tr>
<tr>
<td>last()</td>
<td>instance</td>
<td>(none)</td>
<td>返回最后一个元素。</td></tr>
<tr>
<td>reverse([applyToSelf])</td>
<td>instance</td>
<td>applyToSelf: indicates if the array itself should also be reversed.</td>
<td>&nbsp;反转Array中元素的顺序，如果没有给出参数，或参数为true，则源Array中元素的顺序也反转，否则源Array保持不变。 
</td></tr>
<tr>
<td>shift()</td>
<td>instance</td>
<td>(none)</td>
<td>返回Array的第一个元素并从Array中移除它，Array的Length-1。</td></tr>
<tr>
<td>without(value1 [, value2 [, .. valueN]])</td>
<td>instance</td>
<td>value1 ... valueN: values to be excluded if present in the array.</td>
<td>&nbsp;返回一个把参数列表中包含的元素从源Array中排除的Array。 
</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4><span>document</span> DOM扩展</h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>getElementsByClassName(className [, parentElement])</td>
<td><nobr>instance</nobr></td>
<td>className: name of a CSS class associated with the elements, parentElement: 
object or id of the element that contains the elements being retrieved.</td>
<td>返回所有CSS 
className属性等于className参数的元素，如果没有给出parentElement,那么将搜索document 
body。(此处使用document.body我觉得不如使用document,因为有时有的页面没有body)&nbsp; 
</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4><span>Event</span>扩展</h4>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th></tr>
<tr>
<td>KEY_BACKSPACE</td>
<td><nobr>Number</nobr>Number</td>
<td>8: Constant. Code for the Backspace key.</td></tr>
<tr>
<td>KEY_TAB</td>
<td>Number</td>
<td>9: Constant. Code for the Tab key.</td></tr>
<tr>
<td>KEY_RETURN</td>
<td>Number</td>
<td>13: Constant. Code for the Return key.</td></tr>
<tr>
<td>KEY_ESC</td>
<td>Number</td>
<td>27: Constant. Code for the Esc key.</td></tr>
<tr>
<td>KEY_LEFT</td>
<td>Number</td>
<td>37: Constant. Code for the Left arrow key.</td></tr>
<tr>
<td>KEY_UP</td>
<td>Number</td>
<td>38: Constant. Code for the Up arrow key.</td></tr>
<tr>
<td>KEY_RIGHT</td>
<td>Number</td>
<td>39: Constant. Code for the Right arrow key.</td></tr>
<tr>
<td>KEY_DOWN</td>
<td>Number</td>
<td>40: Constant. Code for the Down arrow key.</td></tr>
<tr>
<td>KEY_DELETE</td>
<td>Number</td>
<td>46: Constant. Code for the Delete key.</td></tr>
<tr>
<td>observers:</td>
<td>Array</td>
<td>List of cached observers. Part of the internal 
implementation details of the object.</td></tr></tbody></table></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>element(event)</td>
<td>static</td>
<td>event: an Event object</td>
<td>返回事件源对象。</td></tr>
<tr>
<td>isLeftClick(event)</td>
<td>static</td>
<td>event: an Event object</td>
<td>如果点击了鼠标左键，返回true.</td></tr>
<tr>
<td>pointerX(event)</td>
<td>static</td>
<td>event: an Event object</td>
<td>返回鼠标的X座标。 </td></tr>
<tr>
<td>pointerY(event)</td>
<td>static</td>
<td>event: an Event object</td>
<td>返回鼠标的Y座标。</td></tr>
<tr>
<td>stop(event)</td>
<td>static</td>
<td>event: an Event object</td>
<td>使用此函数来中断事件的默认行为并阻止传递（冒泡)。</td></tr>
<tr>
<td>findElement(event, tagName)</td>
<td>static</td>
<td>event: an Event object, tagName: name of the desired tag.</td>
<td>从事件源对象开始向上搜索DOM树，直到找到第一个符合tagName的元素</td></tr>
<tr>
<td>observe(element, name, observer, useCapture)</td>
<td>static</td>
<td>element: object or id, name: event name (like 'click', 'load', etc), 
observer: function to handle the event, useCapture: if <span>true</span>, handles the event in the <em>capture</em> phase and if 
<span>false</span> in the <em>bubbling</em> phase.</td>
<td>为对象的某个事件增加一个处理函数。</td></tr>
<tr>
<td>stopObserving(element, name, observer, useCapture)</td>
<td>static</td>
<td>element: object or id, name: event name (like 'click'), observer: function 
that is handling the event, useCapture: if true handles the event in the 
<em>capture</em> phase and if false in the <em>bubbling</em> phase.</td>
<td>和上面的函数相反。</td></tr>
<tr>
<td>_observeAndCache(element, name, observer, useCapture)</td>
<td>static</td>
<td>&nbsp;</td>
<td>私有函数，别管它。</td></tr>
<tr>
<td>unloadCache()</td>
<td><nobr>static</nobr></td>
<td>(none)</td>
<td>私有函数，别管它。从内存中清除所有的observers缓存。</td></tr></tbody></table></p>
<p>下面代码演示如何给window添加一个load事件处理函数。 </p><pre>&lt;script&gt;<br><span>Event.observe(window, 'load', showMessage, false);</span><br>function showMessage() {<br>alert('Page loaded.');<br>}<br>&lt;/script&gt;<br></pre>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>在prototype.js中定义新的对象和类</h4>
<p>另一个这个程序包帮助你的地方就是提供许多既支持面向对象设计理念又有共通功能的许多对象。 </p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>The <span>PeriodicalExecuter</span> object</h4>
<p>这个对象提供一定间隔时间上重复调用一个方法的逻辑。 </p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>[ctor](callback, interval)</td>
<td><nobr>constructor</nobr></td>
<td>callback: a parameterless function, interval: number of seconds</td>
<td>创建这个对象的实例将会重复调用给定的方法。</td></tr></tbody></table></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th></tr>
<tr>
<td>callback</td>
<td><nobr>Function()</nobr></td>
<td>被调用的方法，该方法不能传入参数。</td></tr>
<tr>
<td>frequency</td>
<td>Number</td>
<td>以秒为单位的间隔。</td></tr>
<tr>
<td>currentlyExecuting</td>
<td>Boolean</td>
<td>表示这个方法是否正在执行。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>The <span>Prototype</span> object</h4>
<p><tt>Prototype</tt> 没有太重要的作用，只是声明了该程序包的版本 。 </p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Description</th></tr>
<tr>
<td>Version</td>
<td>String</td>
<td><font face="宋体">版本。</font></td></tr>
<tr>
<td>emptyFunction</td>
<td><nobr>Function()</nobr></td>
<td>空函数。</td></tr>
<tr>
<td>K</td>
<td>Function(obj)</td>
<td>一个仅仅回传参数的函数。</td></tr>
<tr>
<td>ScriptFragment</td>
<td>String</td>
<td>识别script的正则式。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>The <span>Enumerable</span> object</h4>
<p>Enumberable对象能够已更优雅的方式实现对列表样式的结构进行枚举。 </p>
<p>很多其它的对象通过扩展自Enumberable对象来得到这些有用的接口。</p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>each(iterator)</td>
<td><nobr>instance</nobr></td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>把每个element做为第一个参数，element的index作为第一个参数调用iterator函数。</td></tr>
<tr>
<td>all([iterator])</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>这个函数会用给出的iterator测试整个集合，如果集合中任一元素在iterator函数测试中返回false或null，那么这个函数返回false,否则返回true。如果没有给出iterator，那么就会测试所有的元素是不是不等于false和null。你可以简单的把它看成是“检测每个元素都为非空非负”。 
</td></tr>
<tr>
<td>any(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index), 
optional.</td>
<td>这个函数会用给出的iterator测试整个集合，如果集合中任一元素在iterator函数测试中返回true，那么这个函数返回true,否则返回false。如果没有给出iterator，那么就会测试所有的元素是不是有一个不等于false和null。你可以简单的把它看成是“检测元素中是不是有非空非负的”。 
</td></tr>
<tr>
<td>collect(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>&nbsp;调用iterator函数根据集合中每个元素返回一个结果，然后按照原来集合中的顺序，返回一个Array。 
</td></tr>
<tr>
<td>detect(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>集合中每个元素调用一次Iterator，返回第一个使Iterator返回True的元素，如果最终都没有为true的调用，那么返回null。 
</td></tr>
<tr>
<td>entries()</td>
<td>instance</td>
<td>(none)</td>
<td><span>等于toArray()</span>. </td></tr>
<tr>
<td>find(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>等于 <span>detect()</span>. </td></tr>
<tr>
<td>findAll(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>集合中每个元素调用Iterator，返回一个由所有调用Iterator返回结果等于true的元素组成的数组。和reject()相反。 
</td></tr>
<tr>
<td>grep(pattern [, iterator])</td>
<td>instance</td>
<td>pattern: a RegExp object used to match the elements, iterator: a function 
object conforming to Function(value, index)</td>
<td>&nbsp;用pattern参数正则表达式测试集合中的每个元素，返回一个包含所有匹配正则式的元素的Array，如果给出了Iterator，那个每个结果还要经过一下Iterator处理。 
</td></tr>
<tr>
<td>include(obj)</td>
<td>instance</td>
<td>obj: any object</td>
<td>&nbsp;判断集合中包不包含指定对象。 </td></tr>
<tr>
<td>inject(initialValue, iterator)</td>
<td>instance</td>
<td>initialValue: any object to be used as the initial value, iterator: a 
function object conforming to Function(accumulator, value, index)</td>
<td>&nbsp;用Iterator联接所有集合中的元素。Iterator在被调用时把上一次迭代的结果做为第一个参数传给accumulator。第一次迭代时，accurmelator等于initialValue,最后返回accumulator的值。 
</td></tr>
<tr>
<td>invoke(methodName [, arg1 [, arg2 [...]]])</td>
<td>instance</td>
<td>methodName: name of the method that will be called in each element, 
arg1..argN: arguments that will be passed in the method invocation.</td>
<td>集合中的每个元素调用指定的函数（查看源代码可以发现指定函数被调用时，this指针被传成当前元素），并传入给出的参数，返回调用结果组成的Array。 
</td></tr>
<tr>
<td>map(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td><span>同collect()</span>. </td></tr>
<tr>
<td>max([iterator])</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>返回集合中元素的最大值，或调用Iterator后返回值的最大值(如果给出了Iterator的话)。 
</td></tr>
<tr>
<td>member(obj)</td>
<td>instance</td>
<td>obj: any object</td>
<td>同 <span>include()</span>. </td></tr>
<tr>
<td>min([iterator])</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>返回最小值，参见max()。 </td></tr>
<tr>
<td>partition([iterator])</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>返回一个包含两个Array的Array，第一个Array包含所有调用Iterator返回True的元素，第二个Array包含剩下的元素。如果Iterator没有给出，那么就根据元素本身判断。 
</td></tr>
<tr>
<td>pluck(propertyName)</td>
<td>instance</td>
<td>propertyName name of the property that will be read from each element. This 
can also contain the index of the element</td>
<td>返回每个元素的指定属性名的属性的值组成的Array。 </td></tr>
<tr>
<td>reject(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>和&nbsp; <span>findAll()相反（返回所有等于false的元素）</span>. 
</td></tr>
<tr>
<td>select(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>同 <span>findAll()</span>. </td></tr>
<tr>
<td>sortBy(iterator)</td>
<td>instance</td>
<td>iterator: a function object conforming to Function(value, index)</td>
<td>根据每个元素调用Iterator返回的值进行排序返回一个Array。 </td></tr>
<tr>
<td>toArray()</td>
<td>instance</td>
<td>(none)</td>
<td>返回由集合所有元素组成的一个Array。 </td></tr>
<tr>
<td>zip(collection1[, collection2 [, ... collectionN [,transform]]])</td>
<td>instance</td>
<td>collection1 .. collectionN: enumerations that will be merged, transform: a 
function object conforming to Function(value, index)</td>
<td>合并每个给出的集合到当前集合。合并操作返回一个新的array，这个array的元素个数和原集合的元素个数一样，这个array的每个元素又是一个子array,它合并了所有集合中相同index的元素。如果transform函数被指定，那么array的每个元素还会调用transform函数先做处理。举个例子: 
[1,2,3].zip([4,5,6], [7,8,9]).inspect()&nbsp;返回 "[ [1,4,7],[2,5,8],[3,6,9] ]" 
</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>The <span>Hash</span> object</h4>
<p>&nbsp;Hash对象实现一种Hash结构，也就是一个Key:Value对的集合。 </p>
<p>Hash中的每个Item是一个有两个元素的array，前一个是Key，后一个是Value，每个Item也有两个不需加以说明的属性,key和value。 
</p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>keys()</td>
<td>instance</td>
<td>(none)</td>
<td>返回所有Item的key的集合的一个array。 </td></tr>
<tr>
<td>values()</td>
<td><nobr>instance</nobr></td>
<td>(none)</td>
<td>返回所有Item的value的集合的一个array。 </td></tr>
<tr>
<td>merge(otherHash)</td>
<td>instance</td>
<td>otherHash: Hash object</td>
<td>合并给出的Hash，返回一个新Hash。 </td></tr>
<tr>
<td>toQueryString()</td>
<td>instance</td>
<td>(none)</td>
<td>以QueryString那样的样式返回hash中所有的item，例如： <span>'key1=value1&amp;key2=value2&amp;key3=value3'</span> </td></tr>
<tr>
<td>inspect()</td>
<td>instance</td>
<td>(none)</td>
<td>用一种合适的方法显示hash中的key:value对。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>The <span>ObjectRange</span> class</h4>
<p><em>继承自&nbsp; <a href="#Reference.Enumerable">Enumerable</a></em></p>
<p>用上、下边界描述一个对象区域。 </p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Kind</th>
<th>Description</th></tr>
<tr>
<td>start</td>
<td>(any)</td>
<td><nobr>instance</nobr></td>
<td>
<p>range的下边界</p></td></tr>
<tr>
<td>end</td>
<td>(any)</td>
<td>instance</td>
<td>range的上边界</td></tr>
<tr>
<td>exclusive</td>
<td>Boolean</td>
<td>instance</td>
<td>决定边界自身是不是range的一部分。</td></tr></tbody></table></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>[ctor](start, end, exclusive)</td>
<td>constructor</td>
<td>start: the lower bound, end: the upper bound, exclusive: include the bounds 
in the range?</td>
<td>创建一个range对象，从start生成到end,这里要注意的是，start和end必段类型一致，而且该类型要有succ()方法。 
</td></tr>
<tr>
<td>include(searchedValue)</td>
<td><nobr>instance</nobr></td>
<td>searchedValue: value that we are looking for</td>
<td>检查一个value是不是在range中。 </td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>The <span>Class</span> object</h4>
<p>在这个程序包中 <tt>Class</tt> 对象在声明其他的类时候被用到 。用这个对象声明类使得新类支持 <tt>initialize()</tt> 方法，他起构造方法的作用。</p>
<p>看下面的例子</p>
<p>//declaring the class<br><span>var MySampleClass = 
Class.create();</span><br><br>//defining the rest of the class 
implmentation<br>MySampleClass.prototype = {<br><br>&nbsp;&nbsp; initialize: 
function(message) {<br>this.message = message;<br>&nbsp;&nbsp; },<br><br>&nbsp;&nbsp; showMessage: 
function(ajaxResponse) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert(this.message);<br>&nbsp;&nbsp; }<br>}; 
<br><br>//now, let's instantiate and use one object<br>var myTalker = new 
MySampleClass('hi there.');<br>myTalker.showMessage(); //displays 
alert<br><br></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>create(*)</td>
<td><nobr>instance</nobr></td>
<td>(any)</td>
<td>定义新类的构造方法。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --></p>
<h4>The <span>Ajax</span> object</h4>
<p>这个对象被用作其他提供AJAX功能的类的根对象。&nbsp;</p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Kind</th>
<th>Description</th></tr>
<tr>
<td>activeRequestCount</td>
<td>Number</td>
<td>instance</td>
<td>正在处理中的Ajax请求的个数。</td></tr></tbody></table></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>getTransport()</td>
<td><nobr>instance</nobr></td>
<td>(none)</td>
<td>返回新的<tt>XMLHttpRequest</tt> 
对象。</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>The <span>Ajax.Responders</span> object</h4>
<p><em>继承自 <a href="#Reference.Enumerable">Enumerable</a></em></p>
<p>这个对象维持一个在Ajax相关事件发生时将被调用的对象的列表。比如，你要设置一个全局钩子来处理Ajax操作异常，那么你就可以使用这个对象。 </p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Property</th>
<th>Type</th>
<th>Kind</th>
<th>Description</th></tr>
<tr>
<td>responders</td>
<td>Array</td>
<td><nobr>instance</nobr></td>
<td>被注册到Ajax事件通知的对象列表。</td></tr></tbody></table></p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>register(responderToAdd)</td>
<td>instance</td>
<td>responderToAdd: object with methods that will be called.</td>
<td>被传入参数的对象应包含名如Ajax事件的系列方法（如onCreate,onComplete,onException）。通讯事件引发所有被注册的对象的合适名称的函数被调用。 
</td></tr>
<tr>
<td>unregister(responderToRemove)</td>
<td>instance</td>
<td>responderToRemove: object to be removed from the list.</td>
<td>&nbsp;从列表中移除。 </td></tr>
<tr>
<td>dispatch(callback, request, transport, json)</td>
<td>instance</td>
<td>callback: name of the AJAX event being reported, request: the Ajax.Request 
object responsible for the event, transport: the XMLHttpRequest object that 
carried (or is carrying) the AJAX call, json: the X-JSON header of the response 
(if present) </td>
<td>遍历被注册的对象列表，找出有由callback参数决定的那个函数的对象。然后向这些函数传递其它的三个参数，如果Ajax响应中包含一个含有JSON内容的X-JSON 
HTTP头，那么它会被热行并传入json参数。如果事件是onException,那么transport参数会被异常代替，json不会传递。 
</td></tr></tbody></table></p>
<p><!-- ------------------------------------------------------------------------------------------- --><a></a></p>
<h4>The <span>Ajax.Base</span> class</h4>
<p>这个类是其他在Ajax对象中定义的类的基类。 </p>
<p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<th>Method</th>
<th>Kind</th>
<th>Arguments</th>
<th>Description</th></tr>
<tr>
<td>setOptions(options)</td>
<td><nobr>instance</nobr></td>
<td>options: <a href="#Ajax.options">AJAX options</a></td>
<td>设定AJAX操作想要的选项。</td></tr>
<tr>
<td>responseIsSucc