站内搜索
发表回复
收藏 

替换字符串,出现异常 

替换字符串,出现异常


信息: EasyJForum context initialized: E:\web\bbs2\
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadGroups
信息: Succeeded to load groups to cache!
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadSections
信息: Succeeded to load sections to cache!
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadSpecTopics
信息: Succeeded to load recent topics to cache!
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadSpecTopics
信息: Succeeded to load hot topics to cache!
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadSpecTopics
信息: Succeeded to load rank topics to cache!
2009-3-4 23:26:44 com.hongshee.ejforum.common.CacheManager loadSpecTopics
信息: Succeeded to load digest topics to cache!
2009-3-4 23:27:21 com.hongshee.ejforum.util.PageUtils log
警告: 服务端出现异常 -  函数 replace 的参数 1 的数据类型 text 无效。
java.sql.SQLException: 函数 replace 的参数 1 的数据类型 text 无效。
 at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
 at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2816)
 at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2254)
 at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:631)
 at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
 at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:546)
 at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeUpdate(JtdsPreparedStatement.java:505)
 at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
 at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
 at com.hongshee.ejforum.data.EntityDAO.execUpdateSql(Unknown Source)
 at com.hongshee.ejforum.data.TopicDAO.replaceContent(Unknown Source)
 at org.apache.jsp.admin.perform_jsp._jspService(perform_jsp.java:423)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
 at java.lang.Thread.run(Thread.java:595)

如果是 Sql Server 数据库的话可能需要自己手动执行 sql 语句来替换:

 

update ejf_topic set content=REPLACE(cast(content as varchar(8000)),'old text','new text');

update ejf_reply set content=REPLACE(cast(content as varchar(8000)),'old text','new text');

 

如果content字段的总长度没有超过8000字节,语句是没有问题的,如果超过8000字节,更新就比较麻烦了,楼主先看看上述语句是否可以正常执行吧。

黑夜给了我黑色的眼睛,我却用它寻找光明。QQ: 980766123
我们也碰到这个问题-- “服务端出现异常 - 函数 replace 的参数 1 的数据类型 text 无效。”

绝对路径带来的问题。。。还出错。就不能不让它出错?

我也遇到这个问题

管理员,你好!我也遇到这个问题了。

我现在用的是 EasyJForum  3.2 版本。迁移域名之后,进入后台 ==> 系统工具 ==> 数据维护 ==> 内容替换 -  在所有帖子内容中执行字符串替换

输入 以前的域名,现在的域名,按“执行替换”,结果出错,错误信息如下:

服务端出现异常 -  函数 replace 的参数 1 的数据类型 text 无效

我用的数据库是 MS SQL Server 2000 (比较省资源吧)。是不是升级到 MS SQL Server 2005 就会好?或者 论坛的软件升级到 3.3 就会好?或者请贵公司发布补丁吧。谢谢!
建议手动执行 SQL 语句来进行替换。
黑夜给了我黑色的眼睛,我却用它寻找光明。QQ: 980766123
谢谢您的回复。

对于超过8000个字符的,似没法写SQL。
我目前用的是 MS SQL 2000。 是不是换成 2005 就可以写这样的SQL?
另外,图片的网址为什么要用绝对地址啊?用相对地址不好吗?
用绝对地址是便于引用,用相对地址也是可以的。
黑夜给了我黑色的眼睛,我却用它寻找光明。QQ: 980766123
发表回复
查看积分策略说明

快速回复主题

标题  (可选)
内容

恢复自动保存的数据