﻿<?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>BlogJava-nighty-随笔分类-心得</title><link>http://www.blogjava.net/nighty/category/41119.html</link><description>折腾的年华</description><language>zh-cn</language><lastBuildDate>Fri, 05 Jun 2015 19:32:01 GMT</lastBuildDate><pubDate>Fri, 05 Jun 2015 19:32:01 GMT</pubDate><ttl>60</ttl><item><title>CentOS5.5下PHP5.2.10未安装mysql模块的解决方式</title><link>http://www.blogjava.net/nighty/archive/2011/08/14/356488.html</link><dc:creator>寒武纪</dc:creator><author>寒武纪</author><pubDate>Sun, 14 Aug 2011 07:53:00 GMT</pubDate><guid>http://www.blogjava.net/nighty/archive/2011/08/14/356488.html</guid><wfw:comment>http://www.blogjava.net/nighty/comments/356488.html</wfw:comment><comments>http://www.blogjava.net/nighty/archive/2011/08/14/356488.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/nighty/comments/commentRss/356488.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighty/services/trackbacks/356488.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="font-size: 12pt">问题描述：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务器操作系统是Centos5.5，此前已经有多套系统跑在上面，且装有PHP5.2.10。Centos5.X系统的稳定yum安装源版本是5.1.6，并不符合最新版本的phpmyadmin(5.2以上版本)，下载了最新版本phpmyadmin安装后提示缺少mysql支持模块。</span><span style="font-size: 12pt">查看了一下发现的确是安装php的时候没有装上php-mysql模块。直接重新编译php源码安装比较麻烦。</span><br />&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt">一个比较方便的方法：</span><br />&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt">为yum添加第三方的源，然后直接用yum -y install php-mysql进行安装</span><br />&nbsp;&nbsp;&nbsp; <span style="font-size: 12pt">以下方法为从网络搜索到的，做个记录，方面须用之时查阅。</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 导入地址：&nbsp;&nbsp;&nbsp; <span style="color: #008000">rpm --import </span><a style="color: rgb(86,182,233)" href="http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka"><span style="color: #008000">http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka</span></a><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编辑yum源： <span style="color: #008000">vi&nbsp;&nbsp;/etc/yum.repos.d/CentOS-Base.repo</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在最下面添加如下信息：<br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [utterramblings]</span><br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name=Jason's Utter Ramblings Repo</span><br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/</span><br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enabled=1</span><br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpgcheck=1</span><br /><span style="color: #0000ff">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka</span><br /><span style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; letter-spacing: normal; font: 12px/18px Verdana, Arial, helvetica, sans-seriff; white-space: normal; orphans: 2; color: rgb(35,35,35); word-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span">
<p style="text-indent: 0px; margin: 5px auto">&nbsp;&nbsp;&nbsp;<span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;</span><br /><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp; 然后执行安装命令： yum -y install php-mysql&nbsp;&nbsp;&nbsp; 系统就会自动从上面添加的源中读取合适该版本的php-mysl模块，安装完成后重启httpd服务，再访问就OK了。<br />&nbsp;&nbsp;&nbsp; 该方法同样适合于默认安装的php5.1.6版本安装成功后再进行升级到 5.2版本。</span></p></span><img src ="http://www.blogjava.net/nighty/aggbug/356488.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighty/" target="_blank">寒武纪</a> 2011-08-14 15:53 <a href="http://www.blogjava.net/nighty/archive/2011/08/14/356488.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>yum remove导致的杯具用了三个晚上才修复</title><link>http://www.blogjava.net/nighty/archive/2011/05/20/350608.html</link><dc:creator>寒武纪</dc:creator><author>寒武纪</author><pubDate>Fri, 20 May 2011 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/nighty/archive/2011/05/20/350608.html</guid><wfw:comment>http://www.blogjava.net/nighty/comments/350608.html</wfw:comment><comments>http://www.blogjava.net/nighty/archive/2011/05/20/350608.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/nighty/comments/commentRss/350608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighty/services/trackbacks/350608.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 上周服务器的一个PHP软件不能访问，查看原因是CentOS的PCRE模块未用utf-8编码引起的，由是搜索了一些资料照着变更，没有效果。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当时和另一个朋友L共同尝试删除后重装，由于对Linux系统不熟悉，只会使用常规的命令进行一些皮毛的操作，就直接用yum remove进行删除，系统当时还提示是否remove掉相关联的700多个组件或模块。当时也没有多想就直接回车！结果------悲剧了，屏幕狂刷，我意识到pcre是基础模块，所有关联它的或是它关联都删除掉，系统将遭遇一个灾难式的破坏。等刷完屏幕的字符，最终发现：所有的bin目录下的命令全部不见了！！！天哪，连ls命令都没有，唯独剩下一个cd命令。幸运的是，当时运行在服务器的几个应用还能访问，比如说phpmyadmin。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而后想了想，尝试了各种方式去恢复，都没有办法，那么，唯一的办法就是尽量备份原有的数据和文件，重装系统进行环境的重新搭建。还好有其它方式，可以先把里面重要的文件都提取了出来。然后在幸存的phpmyadmin上赶紧进行mysql相关数据库的备份。（注：因为是个人的服务器，所以并没有像公司一样做好运营和备份计划）<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二天决定重装系统了，管理员用了3个小时才搭建起CentOS5.5和SSH远程服务端。轮到我和L需要用SSH进行远程的环境搭建。接下来的三天晚上，真是折腾又折腾。计划安装的几个主要软件是：Mysql、PHP、Apache、JDK、Tomcat、Ruby on Rails、Redmine、PHPMyAdmin等。<br /></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一个晚上，灾难之前装在上面的上述各种软件版本都有点低，所以想干脆直接上最新的，而CentOS5.5的yum库是取不到这些最新的软件的。所以朋友 L 大量地采用了make install和rpm方式来安装，而CentOS本身集成的就只有Apache的版本满足。装了MySQL5.5+phpMyAdmin3.4，运行起来了却发现和MySQL5.5和redmine1.1.1有冲突，主要是RoR环境的Mysql驱动有问题，在网上能找到的都是从<a href="http://www.tmtm.org/en/ruby/mysql/"><u><font color="#0000ff">http://www.tmtm.org/en/ruby/mysql/</font></u></a>&nbsp;下载的0.2.6版本，这个版本我只试在MySQL5.0情况下正常连接。现在换成5.5，就无法运行了，为此我还特地把Ruby环境从1.8.6提高到1.8.7，同样装了redmine官网要求的各种Ruby工具和Rails组件，折腾无果！最后，我还把异常信息拿出来，给ruby-mysql的日本作者发了一个email，第二天作者回复我，原来ruby-mysql已经挂到GitHub去了，而且现在已经是3.0alpha状态了，但是他不确定能否工作在ruby1.8.6下。 最后感觉还是不行，切换回MySQL5.0，同样高版本的ruby-mysql驱动也无法连接低版本的MySQL。第一天以失败告终！<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二天晚上继续折腾，再不停地重新安装，这时才想起一个问题：应该退回到系统宕机前的所有软件版本状态，这样原先备份的数据才能正常恢复，不会带来额外的版本冲突麻烦。于是折腾到接近晚上12：00时发觉方向错了，无奈，和 L 打了个招呼，计划明天让管理员再重装一次系统，现在目前的系统又被我们搞乱了！<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第三天。就着原来的思路，重装恢复到以前的版本，又用yum的原来方式装回原来的版本，这次进行顺利。用了二个小时，就把常用的软件恢复了，同时恢复了数据库。最后只剩下一个问题，redmine的密钥恢复后，仍然无法连接原来的用户密码，我想可能得去查阅redmine的用户管理模块，看看它究竟是怎么生成密码和检验登录的，有趣的事是发现网友找到另一个方法，就是直接在redmine下建ruby脚本，调用ActiveReord的User.save()，存一个自己的新密码，不晓得可不可行，找个时间做个实验看看。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回头一想。其实规划、整理、理清服务器的管理工作，比精通Linux系统、各种软解决技术更为重要！<img src ="http://www.blogjava.net/nighty/aggbug/350608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighty/" target="_blank">寒武纪</a> 2011-05-20 09:24 <a href="http://www.blogjava.net/nighty/archive/2011/05/20/350608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS下用Phusion Passenger方式部署rails应用 -- redmine示例</title><link>http://www.blogjava.net/nighty/archive/2011/05/19/350542.html</link><dc:creator>寒武纪</dc:creator><author>寒武纪</author><pubDate>Thu, 19 May 2011 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/nighty/archive/2011/05/19/350542.html</guid><wfw:comment>http://www.blogjava.net/nighty/comments/350542.html</wfw:comment><comments>http://www.blogjava.net/nighty/archive/2011/05/19/350542.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/nighty/comments/commentRss/350542.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighty/services/trackbacks/350542.html</trackback:ping><description><![CDATA[<blockquote style="margin-right: 0px" dir="ltr">
<p>&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: Verdana">Phusion Passenger模块使得Rails应用可以像PHP模块一样运行在Apache上，非常方便。</span><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;准备条件：CentOS服务器已经装好了Apache2.2和Redmine应用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><br /><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp; 1. 安装Passenger模块</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">gem install passenger</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #0000ff">passenger-install-apache2-module</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二个命令是安装passenger的apache2模块，它已经做得很智能，会提示你确认安装以及最后怎么配置模块到apache中。</span><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;摘出配置段的内容如下：</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Please edit your Apache configuration file, and add these lines: </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7/ext/apache2/mod_passenger.so</span><br /><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.7</span><br /><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PassengerRuby /usr/bin/ruby<br /></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: Verdana">把红色字体部分拷贝到apache的配置文件，可以是主配置文件/etc/httpd/conf/httpd.conf，也可以是在/etc/httpd/conf.d/目录下新建一个子文件命名为ruby.conf，推荐第二种方式，更为简洁，不会影响主文件的配置。</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;2. 先测试一下passenger是否安装正常</span><br /><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 切换到redmine的安装目录下，passenger start&nbsp; 命令尝试一下是否正常能以paasenger方式启动，如果没有异常，恭喜，已经安装完成，剩下的工作就是配置一个虚拟主机和子给你的redmine，这样可以转到更为常用的80端口上。</span><br /><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;3. 配置rails应用做为sub URI模式</span><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在passenger的官方文档中其实有好几种配置的方式，可以是域名、域名子URI等，很多时候你可能只有一个域名，那么利用sub URI来挂不同的应用就显得比较</span><br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先配置一段虚拟主机如下：</span><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="font-family: serif" class="Apple-style-span"></p></blockquote><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><tt style="color: navy">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;VirtualHost *:80&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    ServerName www.phusion.nl
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    DocumentRoot /websites/phusion
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &lt;Directory /websites/phusion&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Allow from all
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/VirtualHost&gt;<br />
</tt></pre>
<p></span></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 解释一下过程大致是先创建一个硬链接，如下：<span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="font-family: serif" class="Apple-style-span"></p><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><tt style="color: navy">&nbsp;&nbsp;&nbsp;&nbsp;    ln -s /webapps/mycook/public /websites/phusion/rails</tt></span></span>&nbsp;</pre><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">&nbsp;</pre><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><span style="font-family: Verdana; font-size: 12pt">     </span><span style="font-family: Verdana; font-size: 12pt">/webapps/mycook/public是你的rails的应用目录下面的public目录，例如你的redmine安装在/var/www/html，这个目录就是<br />    /var/www/html/redmine/public，后面就是你Apache主目录下的创建的一个链接地址rails，意思就是把/var/www/html/redmine/public<br /></span><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium Simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"><span style="font-family: serif" class="Apple-style-span">      链接到/var/www/html/rails，而/var/www/html/rails是实际上不存在的。<br />      然后再配置子目录如下：</pre><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><blockquote style="margin-right: 0px" dir="ltr"><blockquote style="margin-right: 0px" dir="ltr"><pre style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px"><tt style="color: navy"><br />&lt;VirtualHost *:80&gt;
    ServerName <a href="http://www.phusion.nl">www.phusion.nl
</a>    DocumentRoot /websites/phusion
    &lt;Directory /websites/phusion&gt;
        Allow from all
    &lt;/Directory&gt;
    <br />    RailsBaseURI /rails                   # &lt;-- These lines have
    &lt;Directory /websites/phusion/rails&gt;   # &lt;-- been added.
        Options -MultiViews               # &lt;--
    &lt;/Directory&gt;                          # &lt;--
&lt;/VirtualHost&gt;</tt></pre></blockquote></blockquote></pre>
<blockquote style="margin-right: 0px" dir="ltr">
<p>&nbsp;最后四句带#注释说明是重点，应用RailsBaseURI命令把rails子URI指定到rails的应用目录，而rails目录就是我们上面链接的目录，而实际上会跳到我们的直接redmine目录。</p></blockquote>
<p><font face="Courier New">&nbsp;</font></span></span></p><img src ="http://www.blogjava.net/nighty/aggbug/350542.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighty/" target="_blank">寒武纪</a> 2011-05-19 15:10 <a href="http://www.blogjava.net/nighty/archive/2011/05/19/350542.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>无奈只能放弃iBatis</title><link>http://www.blogjava.net/nighty/archive/2009/08/21/292119.html</link><dc:creator>寒武纪</dc:creator><author>寒武纪</author><pubDate>Fri, 21 Aug 2009 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/nighty/archive/2009/08/21/292119.html</guid><wfw:comment>http://www.blogjava.net/nighty/comments/292119.html</wfw:comment><comments>http://www.blogjava.net/nighty/archive/2009/08/21/292119.html#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://www.blogjava.net/nighty/comments/commentRss/292119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighty/services/trackbacks/292119.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 最近的二个项目，由于规模较小，都是十张表之内，而且表关联非常少。所以用了一下iBatis做为数据库关系映射，本着减少手写JDBC代码的目的，想着可以减少工作量。但是却遇到了二个令人郁闷的问题。由于环境的限制，使用了jdk1.4.x编译的iBatis2.3版本，没有使用最近的。<br />
<br />
&nbsp;&nbsp;&nbsp; 第一问题：&nbsp; 其中的一个项目，有一个表为它配置了sql Map的一个delete操作，非常简单，大概就是delete from xxx where id=#value#这样的语句，然后用sqlMapClient进行操作，日志打印完全正常，没有报任何Exception，返回影响记录数也是正确的。但是进数据库一看，巍然不动！左查查，右查查，查不出任何毛病。更奇怪的是，数据库表之间的所有关联和索引全部取消，还是存在这问题。其它的三个字段比较少的表，这样配置，同样的api调用却正常！这个出问题的数据库表字段大概20+个左右。<br />
<br />
&nbsp;&nbsp;&nbsp; 第二个问题：另一个项目，是二期重构，本来一期也不复杂，全部是使用JDBC实现的，只是有些表的字段太多，JDBC写到烦，特别是处理一些NULL的插入，还有批处理时异常日志的详细处理也有点烦。近期做二期升级，就算采用iBatis来减少一些代码量，于于喜涮涮地搞上去了，代码的确减少了许多。单元测试也能通过，后来就设置了比较复杂的数据。发现问题的现场如下：在一个业务接口中，一个事务中包含了许多SQL操作，有delete，也有insert，大概十个sql语句左右，全部放在一个batch中执行，整个batch提交一个事务。测试环境提供了31个类似的业务数据，总共执行31个事务，采用for的循环执行调用，每逢索引 i = 10*n&nbsp; 的时候就会卡住，这个操作得花很长时间，最后能通过。后来进行跟踪，发现是在执行第一个语句delete一个记录（delete from xxx where id='xx'）同样也是单表删除。搜索了google，baidu，没有任何资源，翻遍了文档没有任何说明，查了网站FAQ也没有办法。于是，只能.......郁闷!<br />
<br />
&nbsp;&nbsp; 为什么遇到delete都会有这个问题？不晓得有没有高手遇到同样的问题，这里算是总结的同时也提问，希望有遇到相同类型的高手给个解决的方案。如果不行，就得倒回去用JDBC实现，就此iBatis的体验使用也就搁置，估计以后也不会碰它了。Hibernate就不用了，有点小题大作。<br />
&nbsp;&nbsp; google了才知道，原来iBatis的书籍、论坛、资料、讨论等等相比Hibernate要少很多。学习是很简单，但是遇到这种细节的时候，又不太愿意花时间去研究源代码（都是现实所逼，有个球时间呀？）。所以选框架要慎重！！！ 
<img src ="http://www.blogjava.net/nighty/aggbug/292119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighty/" target="_blank">寒武纪</a> 2009-08-21 16:52 <a href="http://www.blogjava.net/nighty/archive/2009/08/21/292119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>企业OA开发小结</title><link>http://www.blogjava.net/nighty/archive/2009/07/31/289282.html</link><dc:creator>寒武纪</dc:creator><author>寒武纪</author><pubDate>Fri, 31 Jul 2009 07:58:00 GMT</pubDate><guid>http://www.blogjava.net/nighty/archive/2009/07/31/289282.html</guid><wfw:comment>http://www.blogjava.net/nighty/comments/289282.html</wfw:comment><comments>http://www.blogjava.net/nighty/archive/2009/07/31/289282.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/nighty/comments/commentRss/289282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighty/services/trackbacks/289282.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/nighty/archive/2009/07/31/289282.html'>阅读全文</a><img src ="http://www.blogjava.net/nighty/aggbug/289282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighty/" target="_blank">寒武纪</a> 2009-07-31 15:58 <a href="http://www.blogjava.net/nighty/archive/2009/07/31/289282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>