﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Dark Angle-随笔分类-Database</title><link>http://www.cppblog.com/niewenlong/category/4378.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 19 Aug 2008 19:48:19 GMT</lastBuildDate><pubDate>Tue, 19 Aug 2008 19:48:19 GMT</pubDate><ttl>60</ttl><item><title>mysql数据文件破坏后的修复方法</title><link>http://www.cppblog.com/niewenlong/archive/2008/08/19/59336.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Tue, 19 Aug 2008 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2008/08/19/59336.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/59336.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2008/08/19/59336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/59336.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/59336.html</trackback:ping><description><![CDATA[<div id=article_main _element_extended_="true"><span>由于临时断电，使用<span>kill&nbsp;-9</span>中止<span>MySQL</span>服务进程，所有的这些都可能会毁坏<span>MySQL</span>的数据文件。如果在被干扰时，服务正在改变文件，文件可能会留下错误的或不一致的状态。因为这样的毁坏有时是不容易被发现的，当你发现这个错误时可能是很久以后的事了。于是，当你发现这个问题时，也许所有的备份都有同样的错误。<span>&nbsp;<br><br>MySQL</span>参考手册的第十五章讲述了<span>MySQL</span>自带的<span>myisamchk</span>的功能，以及如何使用它检查和修复你的<span>MySQL</span>数据文件。虽然这一章对于每个想要搭建一个强壮的<span>MySQL</span>服务的人都是推荐阅读的，我们还是有必要在这里对其中的要点进行讨论。<span><br><br></span>在我们继续之前，你必须意识到<span>myisamchk</span>程序对用来检查和修改的<span>MySQL</span>数据文件的访问应该是唯一的。如果<span>MySQL</span>服务正在使用某一文件，并对<span>myisamchk</span>正在检查的文件进行修改，<span>myisamchk</span>会误以为发生了错误，并会试图进行修复<span>--</span>这将导致<span>MySQL</span>服务的崩溃！这样，要避免这种情况的发生，通常我们需要在工作时关闭<span>MySQL</span>服务。作为选择，你也可以暂时关闭服务以制作一个文件的拷贝，然后在这个拷贝上工作。当你做完了以后，重新关闭服务并使用新的文件取代原来的文件<span>(</span>也许你还需要使用期间的变更日志<span>)</span>。<span><br>MySQL</span>数据目录不是太难理解的。每一个数据库对应一个子目录，每个子目录中包含了对应于这个数据库中的数据表的文件。每一个数据表对应三个文件，它们和表名相同，但是具有不同的扩展名。<span>tblName.frm</span>文件是表的定义，它保存了表中包含的数据列的内容和类型。<span>tblName.MYD</span>文件包含了表中的数据。<span>tblName.MYI</span>文件包含了表的索引<span>(</span>例如，它可能包含<span>lookup</span>表以帮助提高对表的主键列的查询<span>)</span>。<span><br><br></span>要检查一个表的错误，只需要运行<span>myisamchk(</span>在<span>MySQL</span>的<span>bin</span>目录下<span>)</span>并提供文件的位置和表名，或者是表的索引文件名：</span><span>&nbsp;myisamchk&nbsp;/usr/local/mysql/var/dbName/tblName<br>&nbsp;myisamchk&nbsp;/usr/local/mysql/var/dbName/tblName.MYI</span><span><br><br></span><span>上面的两个命令都可以执行对指定表的检查。要检查数据库中所有的表，可以使用通配符：</span><span>&nbsp;myisamchk&nbsp;/usr/local/mysql/var/dbName/*.MYI&nbsp;</span><span><br></span><span>要检查所有数据库中的所有表，可以使用两个通配符：</span><span>&nbsp;myisamchk&nbsp;/usr/local/mysql/var/*/*.MYI&nbsp;</span><span><br></span><span>如果不带任何选项，<span>myisamchk</span>将对表文件执行普通的检查。如果你对一个表有怀疑，但是普通的检查不能发现任何错误，你可以执行更彻底的检查<span>(</span>但是也更慢！<span>)</span>，这需要使用<span>--extend-check</span>选项：<span><br>&nbsp; </span></span><span>myisamchk&nbsp;--extend-check&nbsp;/path/to/tblName</span>
<p><span><br></span><span>对错误的检查是没有破坏性的，这意味着你不必担心执行对你的数据文件的检查会使已经存在的问题变得更糟。另一方面，修复选项，虽然通常也是安全的，但是它对你的数据文件的更改是无法撤消的。因为这个原因，我们强烈推荐你试图修复一个被破坏的表文件时首先做个备份，并确保在制作这个备份之前你的<span>MySQL</span>服务是关闭的。<span><br><br></span>当你试图修复一个被破坏的表的问题时，有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立，删除信息所指出的文件并再试一次<span>--</span>这通常是上一次修复操作遗留下来的。<span><br></span>这三种修复方法如下所示：<span><br><br>&nbsp;myisamchk&nbsp;--recover&nbsp;--quick&nbsp;/path/to/tblName<br>&nbsp;myisamchk&nbsp;--recover&nbsp;/path/to/tblName<br>&nbsp;myisamchk&nbsp;--safe-recover&nbsp;/path/to/tblName<br>&nbsp;<br><br></span>第一种是最快的，用来修复最普通的问题；而最后一种是最慢的，用来修复一些其它方法所不能修复的问题。<span><br><br></span><strong>检查和修复<span>MySQL</span>数据文件</strong><span><br></span>如果上面的方法无法修复一个被损坏的表，在你放弃之前，你还可以试试下面这两个技巧：<span><br></span>如果你怀疑表的索引文件<span>(*.MYI)</span>发生了不可修复的错误，甚至是丢失了这个文件，你可以使用数据文件<span>(*.MYD)</span>和数据格式文件<span>(*.frm)</span>重新生成它。首先制作一个数据文件<span>(tblName.MYD)</span>的拷贝。重启你的<span>MySQL</span>服务并连接到这个服务上，使用下面的命令删除表的内容：<span>&nbsp;<br>mysql&nbsp;DELETE&nbsp;FROM&nbsp;tblName;<br></span>在删除表的内容的同时，会建立一个新的索引文件。退出登录并重新关闭服务，然后用你刚才保存的数据文件<span>(tblName.MYD)</span>覆盖新的<span>(</span>空<span>)</span>数据文件。最后，使用<span>myisamchk</span>执行标准的修复<span>(</span>上面的第二种方法<span>)</span>，根据表的数据的内容和表的格式文件重新生成索引数据。<span><br><br></span>如果你的表的格式文件<span>(tblName.frm)</span>丢失了或者是发生了不可修复的错误，但是你清楚如何使用相应的<span>CREATE&nbsp;TABLE</span>语句来重新生成这张表，你可以重新生成一个新的<span>.frm</span>文件并和你的数据文件和索引文件<span>(</span>如果索引文件有问题，使用上面的方法重建一个新的<span>)</span>一起使用。首先制作一个数据和索引文件的拷贝，然后删除原来的文件<span>(</span>删除数据目录下有关这个表的所有记录<span>)</span>。<span><br><br></span>启动<span>MySQL</span>服务并使用当初的<span>CREATE&nbsp;TABLE</span>文件建立一个新的表。新的<span>.frm</span>文件应该可以正常工作了，但是最好你还是执行一下标准的修复<span>(</span>上面的第二种方法<span>)</span>。</span></p>
</div>
<p><br>&nbsp;</p>
<p><br><span class=tpc_content><font size=2>可以使用mysql语句,用 CHECK TABLE $table; &nbsp; //其中$table代表数据表的名字，检测表是否损坏，如果损坏可以REPAIR TABLE $table 来修复，如果一次不行，可以多修复几次！<br><br>如果使用WIN服务器,可以先登陆DB服务器，进入此路径，不用进mysql里<br>D:\CD MYSQL<br><br>D:\mysql&gt;CD BIN<br><br>D:\mysql\bin&gt;MYISAMCHK -r d:\mysql\data\guild\msg_table.myi(msg_table)<br>- check key delete-chain<br>- check record delete-chain<br>- recovering (with sort) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'<br>Data records: 23<br>- Fixing index 1<br><br><br>D:\mysql\bin&gt;MYISAMCHK --safe-recover d:\mysql\data\guild\msg_table.myi<br>- recovering (with keycache) MyISAM-table 'd:\mysql\data\guild\msg_table.myi'<br>Data records: 89<br><br>D:\mysql\bin&gt;<br><br>当不知道哪个表坏了，可以进入mysql数据库:<br>use guild;<br>desc msg_table; 看msg_table有没有坏<br><br>修复好了进入MYSQL数据库中打命令检查：show table;</font></span><br><!----></p>
<p><br>&nbsp;</p>
<p>&nbsp;</p>
<!-- google_ad_section_end -->
<img src ="http://www.cppblog.com/niewenlong/aggbug/59336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2008-08-19 13:57 <a href="http://www.cppblog.com/niewenlong/archive/2008/08/19/59336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Mysql日期和时间函数不求人</title><link>http://www.cppblog.com/niewenlong/archive/2008/08/15/58900.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 14 Aug 2008 16:28:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2008/08/15/58900.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/58900.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2008/08/15/58900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/58900.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/58900.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">这里是一个使用日期函数的例子。下面的查询选择了所有记录，其date_col的值是在最后30天以内：&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">mysql&gt; SELECT something FROM table&nbsp; <br>WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) &lt;= 30;&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DAYOFWEEK(date)&nbsp; <br>返回日期date的星期索引(1=星期天，2=星期一, &#8230;&#8230;7=星期六)。这些索引值对应于ODBC标准。&nbsp; <br>mysql&gt; select DAYOFWEEK('1998-02-03');&nbsp; <br>-&gt; 3&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">WEEKDAY(date)&nbsp; <br>返回date的星期索引(0=星期一，1=星期二, &#8230;&#8230;6= 星期天)。&nbsp; <br>mysql&gt; select WEEKDAY('1997-10-04 22:23:00');&nbsp; <br>-&gt; 5&nbsp; <br>mysql&gt; select WEEKDAY('1997-11-05');&nbsp; <br>-&gt; 2&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DAYOFMONTH(date)&nbsp; <br>返回date的月份中日期，在1到31范围内。&nbsp; <br>mysql&gt; select DAYOFMONTH('1998-02-03');&nbsp; <br>-&gt; 3&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DAYOFYEAR(date)&nbsp; <br>返回date在一年中的日数, 在1到366范围内。&nbsp; <br>mysql&gt; select DAYOFYEAR('1998-02-03');&nbsp; <br>-&gt; 34&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">MONTH(date)&nbsp; <br>返回date的月份，范围1到12。&nbsp; <br>mysql&gt; select MONTH('1998-02-03');&nbsp; <br>-&gt; 2&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DAYNAME(date)&nbsp; <br>返回date的星期名字。&nbsp; <br>mysql&gt; select DAYNAME("1998-02-05");&nbsp; <br>-&gt; 'Thursday'&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">MONTHNAME(date)&nbsp; <br>返回date的月份名字。&nbsp; <br>mysql&gt; select MONTHNAME("1998-02-05");&nbsp; <br>-&gt; 'February'&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">QUARTER(date)&nbsp; <br>返回date一年中的季度，范围1到4。&nbsp; <br>mysql&gt; select QUARTER('98-04-01');&nbsp; <br>-&gt; 2&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">WEEK(date)&nbsp; <br>　&nbsp; <br>WEEK(date,first)&nbsp; <br>对于星期天是一周的第一天的地方，有一个单个参数，返回date的周数，范围在0到52。2个参数形式WEEK()允许 <br>你指定星期是否开始于星期天或星期一。如果第二个参数是0，星期从星期天开始，如果第二个参数是1， <br>从星期一开始。&nbsp; <br>mysql&gt; select WEEK('1998-02-20');&nbsp; <br>-&gt; 7&nbsp; <br>mysql&gt; select WEEK('1998-02-20',0);&nbsp; <br>-&gt; 7&nbsp; <br>mysql&gt; select WEEK('1998-02-20',1);&nbsp; <br>-&gt; 8&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">YEAR(date)&nbsp; <br>返回date的年份，范围在1000到9999。&nbsp; <br>mysql&gt; select YEAR('98-02-03');&nbsp; <br>-&gt; 1998&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">HOUR(time)&nbsp; <br>返回time的小时，范围是0到23。&nbsp; <br>mysql&gt; select HOUR('10:05:03');&nbsp; <br>-&gt; 10&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">MINUTE(time)&nbsp; <br>返回time的分钟，范围是0到59。&nbsp; <br>mysql&gt; select MINUTE('98-02-03 10:05:03');&nbsp; <br>-&gt; 5&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">SECOND(time)&nbsp; <br>回来time的秒数，范围是0到59。&nbsp; <br>mysql&gt; select SECOND('10:05:03');&nbsp; <br>-&gt; 3&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">PERIOD_ADD(P,N)&nbsp; <br>增加N个月到阶段P（以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。&nbsp; <br>mysql&gt; select PERIOD_ADD(9801,2);&nbsp; <br>-&gt; 199803&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">PERIOD_DIFF(P1,P2)&nbsp; <br>返回在时期P1和P2之间月数，P1和P2应该以格式YYMM或YYYYMM。注意，时期参数P1和P2不是日期值。&nbsp; <br>mysql&gt; select PERIOD_DIFF(9802,199703);&nbsp; <br>-&gt; 11&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DATE_ADD(date,INTERVAL expr type)&nbsp; <br>　&nbsp; <br>DATE_SUB(date,INTERVAL expr type)&nbsp; <br>　&nbsp; <br>ADDDATE(date,INTERVAL expr type)&nbsp; <br>　&nbsp; <br>SUBDATE(date,INTERVAL expr type)&nbsp; <br>这些功能执行日期运算。对于MySQL 3.22，他们是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同义词。 <br>在MySQL 3.23中，你可以使用+和-而不是DATE_ADD()和DATE_SUB()。（见例子）date是一个指定开始日期的 <br>DATETIME或DATE值，expr是指定加到开始日期或从开始日期减去的间隔值一个表达式，expr是一个字符串；它可以以 <br>一个&#8220;-&#8221;开始表示负间隔。type是一个关键词，指明表达式应该如何被解释。EXTRACT(type FROM date)函数从日期 <br>中返回&#8220;type&#8221;间隔。下表显示了type和expr参数怎样被关联： type值 含义 期望的expr格式&nbsp; <br>SECOND 秒 SECONDS&nbsp; <br>MINUTE 分钟 MINUTES&nbsp; <br>HOUR 时间 HOURS&nbsp; <br>DAY 天 DAYS&nbsp; <br>MONTH 月 MONTHS&nbsp; <br>YEAR 年 YEARS&nbsp; <br>MINUTE_SECOND 分钟和秒 "MINUTES:SECONDS"&nbsp; <br>HOUR_MINUTE 小时和分钟 "HOURS:MINUTES"&nbsp; <br>DAY_HOUR 天和小时 "DAYS HOURS"&nbsp; <br>YEAR_MONTH 年和月 "YEARS-MONTHS"&nbsp; <br>HOUR_SECOND 小时, 分钟， "HOURS:MINUTES:SECONDS"&nbsp; <br>DAY_MINUTE 天, 小时, 分钟 "DAYS HOURS:MINUTES"&nbsp; <br>DAY_SECOND 天, 小时, 分钟, 秒 "DAYS HOURS:MINUTES:SECONDS"&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">MySQL在expr格式中允许任何标点分隔符。表示显示的是建议的分隔符。如果date参数是一个DATE值并且你的计算仅仅 <br>包含YEAR、MONTH和DAY部分(即，没有时间部分)，结果是一个DATE值。否则结果是一个DATETIME值。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">mysql&gt; SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;&nbsp; <br>-&gt; 1998-01-01 00:00:00&nbsp; <br>mysql&gt; SELECT INTERVAL 1 DAY + "1997-12-31";&nbsp; <br>-&gt; 1998-01-01&nbsp; <br>mysql&gt; SELECT "1998-01-01" - INTERVAL 1 SECOND;&nbsp; <br>-&gt; 1997-12-31 23:59:59&nbsp; <br>mysql&gt; SELECT DATE_ADD("1997-12-31 23:59:59",&nbsp; <br>INTERVAL 1 SECOND);&nbsp; <br>-&gt; 1998-01-01 00:00:00&nbsp; <br>mysql&gt; SELECT DATE_ADD("1997-12-31 23:59:59",&nbsp; <br>INTERVAL 1 DAY);&nbsp; <br>-&gt; 1998-01-01 23:59:59&nbsp; <br>mysql&gt; SELECT DATE_ADD("1997-12-31 23:59:59",&nbsp; <br>INTERVAL "1:1" MINUTE_SECOND);&nbsp; <br>-&gt; 1998-01-01 00:01:00&nbsp; <br>mysql&gt; SELECT DATE_SUB("1998-01-01 00:00:00",&nbsp; <br>INTERVAL "1 1:1:1" DAY_SECOND);&nbsp; <br>-&gt; 1997-12-30 22:58:59&nbsp; <br>mysql&gt; SELECT DATE_ADD("1998-01-01 00:00:00",&nbsp; <br>INTERVAL "-1 10" DAY_HOUR);&nbsp; <br>-&gt; 1997-12-30 14:00:00&nbsp; <br>mysql&gt; SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);&nbsp; <br>-&gt; 1997-12-02&nbsp; <br>mysql&gt; SELECT EXTRACT(YEAR FROM "1999-07-02");&nbsp; <br>-&gt; 1999&nbsp; <br>mysql&gt; SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");&nbsp; <br>-&gt; 199907&nbsp; <br>mysql&gt; SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");&nbsp; <br>-&gt; 20102&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">如果你指定太短的间隔值(不包括type关键词期望的间隔部分)，MySQL假设你省掉了间隔值的最左面部分。例如， <br>如果你指定一个type是DAY_SECOND，值expr被希望有天、小时、分钟和秒部分。如果你象"1:10"这样指定值， <br>MySQL假设日子和小时部分是丢失的并且值代表分钟和秒。换句话说，"1:10" DAY_SECOND以它等价于"1:10" MINUTE_SECOND <br>的方式解释，这对那MySQL解释TIME值表示经过的时间而非作为一天的时间的方式有二义性。如果你使用确实不正确的日期， <br>结果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且结果日期大于新月份的最大值天数，日子在新月用最大的天调整。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">mysql&gt; select DATE_ADD('1998-01-30', Interval 1 month);&nbsp; <br>-&gt; 1998-02-28&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">注意，从前面的例子中词INTERVAL和type关键词不是区分大小写的。&nbsp; <br>TO_DAYS(date)&nbsp; <br>给出一个日期date，返回一个天数(从0年的天数)。&nbsp; <br>mysql&gt; select TO_DAYS(950501);&nbsp; <br>-&gt; 728779&nbsp; <br>mysql&gt; select TO_DAYS('1997-10-07');&nbsp; <br>-&gt; 729669&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">FROM_DAYS(N)&nbsp; <br>给出一个天数N，返回一个DATE值。&nbsp; <br>mysql&gt; select FROM_DAYS(729669);&nbsp; <br>-&gt; '1997-10-07'&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">TO_DAYS()不打算用于使用格列高里历(1582)出现前的值。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">DATE_FORMAT(date,format)&nbsp; <br>根据format字符串格式化date值。下列修饰符可以被用在format字符串中： %M 月名字(January&#8230;&#8230;December)&nbsp; <br>%W 星期名字(Sunday&#8230;&#8230;Saturday)&nbsp; <br>%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。）&nbsp; <br>%Y 年, 数字, 4 位&nbsp; <br>%y 年, 数字, 2 位&nbsp; <br>%a 缩写的星期名字(Sun&#8230;&#8230;Sat)&nbsp; <br>%d 月份中的天数, 数字(00&#8230;&#8230;31)&nbsp; <br>%e 月份中的天数, 数字(0&#8230;&#8230;31)&nbsp; <br>%m 月, 数字(01&#8230;&#8230;12)&nbsp; <br>%c 月, 数字(1&#8230;&#8230;12)&nbsp; <br>%b 缩写的月份名字(Jan&#8230;&#8230;Dec)&nbsp; <br>%j 一年中的天数(001&#8230;&#8230;366)&nbsp; <br>%H 小时(00&#8230;&#8230;23)&nbsp; <br>%k 小时(0&#8230;&#8230;23)&nbsp; <br>%h 小时(01&#8230;&#8230;12)&nbsp; <br>%I 小时(01&#8230;&#8230;12)&nbsp; <br>%l 小时(1&#8230;&#8230;12)&nbsp; <br>%i 分钟, 数字(00&#8230;&#8230;59)&nbsp; <br>%r 时间,12 小时(hh:mm:ss [AP]M)&nbsp; <br>%T 时间,24 小时(hh:mm:ss)&nbsp; <br>%S 秒(00&#8230;&#8230;59)&nbsp; <br>%s 秒(00&#8230;&#8230;59)&nbsp; <br>%p AM或PM&nbsp; <br>%w 一个星期中的天数(0=Sunday &#8230;&#8230;6=Saturday ）&nbsp; <br>%U 星期(0&#8230;&#8230;52), 这里星期天是星期的第一天&nbsp; <br>%u 星期(0&#8230;&#8230;52), 这里星期一是星期的第一天&nbsp; <br>%% 一个文字&#8220;%&#8221;。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">所有的其他字符不做解释被复制到结果中。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">mysql&gt; select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');&nbsp; <br>-&gt; 'Saturday October 1997'&nbsp; <br>mysql&gt; select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');&nbsp; <br>-&gt; '22:23:00'&nbsp; <br>mysql&gt; select DATE_FORMAT('1997-10-04 22:23:00',&nbsp; <br>'%D %y %a %d %m %b %j');&nbsp; <br>-&gt; '4th 97 Sat 04 10 Oct 277'&nbsp; <br>mysql&gt; select DATE_FORMAT('1997-10-04 22:23:00',&nbsp; <br>'%H %k %I %r %T %S %w');&nbsp; <br>-&gt; '22 22 10 10:23:00 PM 22:23:00 00 6'&nbsp; <br>MySQL3.23中，在格式修饰符字符前需要%。在MySQL更早的版本中，%是可选的。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">TIME_FORMAT(time,format)&nbsp; <br>这象上面的DATE_FORMAT()函数一样使用，但是format字符串只能包含处理小时、分钟和秒的那些格式修饰符。 <br>其他修饰符产生一个NULL值或0。&nbsp; <br>CURDATE()&nbsp; <br>　&nbsp; <br>CURRENT_DATE&nbsp; <br>以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值，取决于函数是在一个字符串还是数字上下文被使用。&nbsp; <br>mysql&gt; select CURDATE();&nbsp; <br>-&gt; '1997-12-15'&nbsp; <br>mysql&gt; select CURDATE() + 0;&nbsp; <br>-&gt; 19971215&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">CURTIME()&nbsp; <br>　&nbsp; <br>CURRENT_TIME&nbsp; <br>以'HH:MM:SS'或HHMMSS格式返回当前时间值，取决于函数是在一个字符串还是在数字的上下文被使用。&nbsp; <br>mysql&gt; select CURTIME();&nbsp; <br>-&gt; '23:50:26'&nbsp; <br>mysql&gt; select CURTIME() + 0;&nbsp; <br>-&gt; 235026&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">NOW()&nbsp; <br>　&nbsp; <br>SYSDATE()&nbsp; <br>　&nbsp; <br>CURRENT_TIMESTAMP&nbsp; <br>以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回当前的日期和时间，取决于函数是在一个字符串还是在数字的 <br>上下文被使用。&nbsp; <br>mysql&gt; select NOW();&nbsp; <br>-&gt; '1997-12-15 23:50:26'&nbsp; <br>mysql&gt; select NOW() + 0;&nbsp; <br>-&gt; 19971215235026&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">UNIX_TIMESTAMP()&nbsp; <br>　&nbsp; <br>UNIX_TIMESTAMP(date)&nbsp; <br>如果没有参数调用，返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一 <br>个date参数被调用，它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME <br>字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。&nbsp; <br>mysql&gt; select UNIX_TIMESTAMP();&nbsp; <br>-&gt; 882226357&nbsp; <br>mysql&gt; select UNIX_TIMESTAMP('1997-10-04 22:23:00');&nbsp; <br>-&gt; 875996580&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">当UNIX_TIMESTAMP被用于一个TIMESTAMP列，函数将直接接受值，没有隐含的&#8220;string-to-unix-timestamp&#8221;变换。&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">FROM_UNIXTIME(unix_timestamp)&nbsp; <br>以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值，取决于函数是在一个字符串 <br>还是或数字上下文中被使用。&nbsp; <br>mysql&gt; select FROM_UNIXTIME(875996580);&nbsp; <br>-&gt; '1997-10-04 22:23:00'&nbsp; <br>mysql&gt; select FROM_UNIXTIME(875996580) + 0;&nbsp; <br>-&gt; 19971004222300&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">FROM_UNIXTIME(unix_timestamp,format)&nbsp; <br>返回表示 Unix 时间标记的一个字符串，根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条 <br>目同样的修饰符。&nbsp; <br>mysql&gt; select FROM_UNIXTIME(UNIX_TIMESTAMP(),&nbsp; <br>'%Y %D %M %h:%i:%s %x');&nbsp; <br>-&gt; '1997 23rd December 03:43:30 x'&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">SEC_TO_TIME(seconds)&nbsp; <br>返回seconds参数，变换成小时、分钟和秒，值以'HH:MM:SS'或HHMMSS格式化，取决于函数是在一个字符串还是在数字 <br>上下文中被使用。&nbsp; <br>mysql&gt; select SEC_TO_TIME(2378);&nbsp; <br>-&gt; '00:39:38'&nbsp; <br>mysql&gt; select SEC_TO_TIME(2378) + 0;&nbsp; <br>-&gt; 3938&nbsp; </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">TIME_TO_SEC(time)&nbsp; <br>返回time参数，转换成秒。&nbsp; <br>mysql&gt; select TIME_TO_SEC('22:23:00');&nbsp; <br>-&gt; 80580&nbsp; <br>mysql&gt; select TIME_TO_SEC('00:39:38');&nbsp; <br>-&gt; 2378 </p>
<p style="FONT-SIZE: 10pt; FONT-FAMILY: Arial">&nbsp;</p>
<img src ="http://www.cppblog.com/niewenlong/aggbug/58900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2008-08-15 00:28 <a href="http://www.cppblog.com/niewenlong/archive/2008/08/15/58900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何导出mysql 数据结构</title><link>http://www.cppblog.com/niewenlong/archive/2008/07/02/55119.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Wed, 02 Jul 2008 02:36:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2008/07/02/55119.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/55119.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2008/07/02/55119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/55119.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/55119.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: mysqldump   -d   -uroot   -p   database>databaseStr.sql   <br>  -d   ：只要结构   <br>  -p   ：输入密码   <br>  -uroot   :   用户为root   <br>  database>databaseStr.sql   把database   数据库的结构生成为文件   databaseStr.sql&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2008/07/02/55119.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/55119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2008-07-02 10:36 <a href="http://www.cppblog.com/niewenlong/archive/2008/07/02/55119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>清除 空格.</title><link>http://www.cppblog.com/niewenlong/archive/2007/09/03/31450.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Mon, 03 Sep 2007 03:35:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/09/03/31450.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/31450.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/09/03/31450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/31450.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/31450.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update&nbsp; tablename set&nbsp;&nbsp; 字段名=ltrim(rtrim(字段名))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Update tablename Set 字段名=Replace(字段名,' ','')&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replace('字段,char(13)+char(10),'')</p>
<img src ="http://www.cppblog.com/niewenlong/aggbug/31450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-09-03 11:35 <a href="http://www.cppblog.com/niewenlong/archive/2007/09/03/31450.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XP下安装SQL2000企业版本</title><link>http://www.cppblog.com/niewenlong/archive/2007/09/03/31443.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Mon, 03 Sep 2007 02:12:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/09/03/31443.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/31443.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/09/03/31443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/31443.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/31443.html</trackback:ping><description><![CDATA[<br><span style="FONT-FAMILY: Comic Sans MS">SQL2000企业版本适用于WIN 2000系统，2003系统和XP一般装不了需要选用个人版，当然如果你在不清楚的前提下辛辛苦苦下载了企业版本却不能安装，是不是很失望呢？这里介绍一个XP下安装装SQL2000企业版本方法以供参考~<br><br>办法如下：<br><br>　　一．在SQL服务器的安装盘中找到MSDE这个目录，并且点击setup.exe安装它，过程简单直接下一步就ＯＫ了。<br><br>　　二. 重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。<br><br>&nbsp; &nbsp; &nbsp;三. 再拿出SQL服务器版的安装光盘，直接安装客户端工具（这个不要多说吧？最简单的方法就是直接点击光盘根目录下的autorun.exe)<br><br>根据提示安装，自检过程中知道系统不是SERVER版，会提示只安装客户端工具。（哈哈，服务端我已有了）<br><br>&nbsp; &nbsp; &nbsp;四. 打开企业管理器，试用SA用户连一下看看，是不是发现SA用户登陆失败？因为你还没有与信任SQL SERVER连接相关联。还好这个只要对系统注册表稍加修改就可以啦：<br><br>&nbsp; &nbsp; &nbsp;在运行中输入regedit打开注册表编辑器，找到[HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER]，这个项里面<br><br>有一个键值LoginMode，默认下，值是1，现在将值改为2，重启电脑。<br><br>&nbsp; &nbsp; 五. 再打开企业管理，再连接试试，是不是OK了！</span>
<img src ="http://www.cppblog.com/niewenlong/aggbug/31443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-09-03 10:12 <a href="http://www.cppblog.com/niewenlong/archive/2007/09/03/31443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ascent wow</title><link>http://www.cppblog.com/niewenlong/archive/2007/08/23/30710.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 23 Aug 2007 14:55:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/08/23/30710.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/30710.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/08/23/30710.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/30710.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/30710.html</trackback:ping><description><![CDATA[update ascent.creature_names,onewowrc1.creature_names set <br>ascent.creature_names.creature_name = onewowrc1.creature_names.creature_name ,<br>ascent.creature_names.subname = onewowrc1.creature_names.subname <br>where ascent.creature_names.entry = onewowrc1.creature_names.entry <br><br><br><br>update ascent.gameobject_names,onewowrc1.gameobject_names set <br>ascent.gameobject_names.name = onewowrc1.gameobject_names.name <br>where ascent.gameobject_names.entry = onewowrc1.gameobject_names.entry <br><br><br><br><br>update creature_proto set maxlevel=minlevel, maxhealth =minhealth where entry BETWEEN 100000 and 100044 
<img src ="http://www.cppblog.com/niewenlong/aggbug/30710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-08-23 22:55 <a href="http://www.cppblog.com/niewenlong/archive/2007/08/23/30710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 编码</title><link>http://www.cppblog.com/niewenlong/archive/2007/08/23/30704.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 23 Aug 2007 14:15:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/08/23/30704.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/30704.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/08/23/30704.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/30704.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/30704.html</trackback:ping><description><![CDATA[1 在my.cf文件的[mysqld]段设置：<br>default-character-set=utf8<br><br>2 单独设置某个数据库：<br>alter <span class=noted id=note_temp _element_extended_="true">database testdb </span>character set utf8;<br><br>查看mysql支持的编码：<br>show character set;<br>
<img src ="http://www.cppblog.com/niewenlong/aggbug/30704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-08-23 22:15 <a href="http://www.cppblog.com/niewenlong/archive/2007/08/23/30704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>update</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/16/26423.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Fri, 15 Jun 2007 21:37:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/16/26423.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/26423.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/16/26423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/26423.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/26423.html</trackback:ping><description><![CDATA[UPDATE b<br>SET [LEFT] = a.X1, [TOP] = a.Y1, [RIGHT] = a.X2, [bottom] = a.Y2<br>FROM ssiinfo b JOIN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zonetriggers a ON a.zoneid = b.zoneid
<img src ="http://www.cppblog.com/niewenlong/aggbug/26423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-16 05:37 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/16/26423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Linux下安装和使用MySQL</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/07/25770.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 07 Jun 2007 14:03:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/07/25770.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25770.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/07/25770.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25770.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25770.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在Linux下安装和使用MySQL&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/07/25770.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-07 22:03 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/07/25770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux mysql使用说明</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/07/25764.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 07 Jun 2007 12:31:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/07/25764.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25764.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/07/25764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25764.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25764.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: linux mysql使用说明&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/07/25764.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-07 20:31 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/07/25764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[mysql]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Thu, 07 Jun 2007 12:27:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25763.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25763.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25763.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: [mysql]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)<br><br>没启动mysql的守护进程，执行service mysqld start就行了&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-07 20:27 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/07/25763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLite 数据库加密的一种解决方案</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/01/25263.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Fri, 01 Jun 2007 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/01/25263.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25263.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/01/25263.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25263.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25263.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 其实SQLite的两个加密函数使用起来非常的简单，下面分情况说明：<br><br>①     给一个未加密的数据库添加密码：如果想要添加密码，则可以在打开数据库文件之后，关闭数据库文件之前的任何时刻调用sqlite3_key函数即可，该函数有三个参数，其中第一个参数为数据库对象，第二个参数是要设定的密码，第三个是密码的长度。例如：sqlite3_key(db,"1q2w3e4r",8);        //给数据库设定密码1q2w3e4r<br><br>②     读取一个加密数据库中的数据：完成这个任务依然十分简单，你只需要在打开数据库之后，再次调用一下sqlite3_key函数即可，例如，但数据库密码是123456时，你只需要在代码中加入sqlite3_key(db,"123456",6);<br><br>①     更改数据库密码：首先你需要使用当前的密码正确的打开数据库，之后你可以调用sqlite3_rekey(db,"112233",6) 来更改数据库密码。<br><br>②     删除密码：也就是把数据库恢复到明文状态。这时你仍然只需要调用sqlite3_&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/01/25263.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-01 11:30 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/01/25263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为SQLite数据库添加加密功能</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Fri, 01 Jun 2007 03:27:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25261.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25261.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25261.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     SQLite是一个很好用的嵌入式数据库。可惜美中不足的是SQLite的免费版本不具备加密功能。曾经在网上看到一个用WinCrypt实现加密功能的版本，但我不喜欢太依赖于Windows平台。这几日有时间，自己就用XXTEA算法在 SQLite3.3.7版本的基础上实现了加密功能。选择XXTEA主要是因为这个算法速度很快，对性能造成的影响相对较小。顺便修改了网上流传的XXTEA代码的一处内存越界的BUG。<br>    用SQLite的一般是单机版软件比较多，有加密需求的一定不少，所以现在放出源代码与大家分享。代码的工程文件是用VC2005，如果用其它编译器，编译的时候不要忘记加上SQLITE_HAS_CODEC宏。代码只是粗略测试过，不保证100％无BUG和逻辑错误。 &nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-01 11:27 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Some other's blogs</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/01/25257.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Fri, 01 Jun 2007 02:53:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/01/25257.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25257.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/01/25257.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25257.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25257.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/zieckey/category/198148.aspx">http://blog.csdn.net/zieckey/category/198148.aspx</a>
<img src ="http://www.cppblog.com/niewenlong/aggbug/25257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-01 10:53 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/01/25257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Windows下编译sqlite3生成动态链接库并使用之</title><link>http://www.cppblog.com/niewenlong/archive/2007/06/01/25256.html</link><dc:creator>聂文龙</dc:creator><author>聂文龙</author><pubDate>Fri, 01 Jun 2007 02:51:00 GMT</pubDate><guid>http://www.cppblog.com/niewenlong/archive/2007/06/01/25256.html</guid><wfw:comment>http://www.cppblog.com/niewenlong/comments/25256.html</wfw:comment><comments>http://www.cppblog.com/niewenlong/archive/2007/06/01/25256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/niewenlong/comments/commentRss/25256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/niewenlong/services/trackbacks/25256.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1). 打开VC新建一个“Win32 Dynamic-Link Library”工程，命名为:sqlite3<br>2). 在接下来的对话框中选择"An empty DLL project",点 FINISH->OK<br>3). 将源码中所有的 *.c *.h *.def 复制到工程文件夹下<br>4). 在工程的Source File中添加你下载到的SQLite源文件中所有*.c文件，<br>注意这里不要添加shell.c和tclsqlite.c这两个文件。<br>5). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中<br>6). 在Header File中添加你下载到的SQLite源文件中所有*.h文件，<br>7). 开始编译,Build(F7)一下<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/niewenlong/archive/2007/06/01/25256.html'>阅读全文</a><img src ="http://www.cppblog.com/niewenlong/aggbug/25256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/niewenlong/" target="_blank">聂文龙</a> 2007-06-01 10:51 <a href="http://www.cppblog.com/niewenlong/archive/2007/06/01/25256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>