Oracle: ORA-01461 仅可以为插入 LONG 列的 LONG 值赋值(can bind a LONG value only for insert into a LONG )
(以下都为个人总结,非官方解决办法)
ORA-01461解决办法:
引起原因: 主要为CLOB,BLOB等大字段数据Insert引起.
我的环境: WCF + NHibernate 2.1.1 + Oracle 10g + OracleClient19g
先在 下载Oracle 10g Release 2 ODAC and Oracle Developer Tools for Visual Studio .NET, 配置好数据库的链接(确保没问题,自带测试程序,可以做测试)
接下来开始配置我们的WCF Web环境 & NHibernate.cfg.xml
1. 在web.config中加入以下配置

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<!-- Oracle 11g Config Only one be enable -->
<qualifyAssembly partialName="Oracle.DataAccess" fullName="Oracle.DataAccess, Version=2.111.6.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</assemblyBinding>
<!-- Oracle 10g Config, Only one be enable -->
<qualifyAssembly partialName="Oracle.DataAccess" fullName="Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</assemblyBinding>
</runtime>
</configuration>
2. 在hibernate.cfg.xml中坐如下修改
3. 个人理解
Oracle.DataAccess应该是Oracle 为.Net 类库提供的一套数据库访问组件,但是否是基于System.Data.OracleClient的,由于时间的关系,没做过多的研究.
配置好之后,插入CLOB字段数据测试成功
备注:
a. Oracle 总客户端程序一定要跟服务端程序做对应, 貌似在Oracle 的产品体系架构中不存在高版本自适应低版本的规则(这一点上微软就不一样了,更人性化,哈哈,我想Oracle 也肯定有他的理由,并不是说Oracle不好哦!)
b. 对于CLOB字段在hibernate映射文件中的类型对应, sql-type="CLOB" type="String"(对应C#类型的映射)
可以草考的其他资料:
http://forums.oracle.com/forums/thread.jspa?threadID=259360&tstart=0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架