En la base de producción me da un error al guardar un campo doublé

ORA-01461: sólo puede enlazar un valor LONG para insertarlo en una columna LONG

Oracle.ManagedDataAccess.Client.OracleExceptionORA-01461: sólo puede enlazar un valor LONG para insertarlo en una columna LONG
System.Data.UpdateException: Se produjo un error mientras se actualizaban las entradas. Vea la excepción interna para obtener detalles. ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-01461: sólo     puede enlazar un valor LONG para insertarlo en una columna LONG
   en OracleInternal.ServiceObjects.OracleCommandImpl.VerifyExecution(OracleConnectionImpl connectionImpl, Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, OracleException& exceptionForArrayBindDML,     Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone)
   en OracleInternal.ServiceObjects.OracleCommandImpl.ExecuteNonQuery(String commandText, OracleParameterCollection paramColl, CommandType commandType, OracleConnectionImpl connectionImpl, Int32     longFetchSize, Int64 clientInitialLOBFS, OracleDependencyImpl orclDependencyImpl, Int64[]& scnFromExecution, OracleParameterCollection& bindByPositionParamColl, Boolean& bBindParamPresent,     OracleException& exceptionForArrayBindDML, Boolean isFromEF)
   en Oracle.ManagedDataAccess.Client.OracleCommand.ExecuteNonQuery()
   en System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
   en System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   --- Fin del seguimiento de la pila de la excepción interna ---
   en System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
   en System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options)
   en Aseinfo.VH4.Data.AppDataContext.SaveChanges(SaveOptions options) en c:\VH4\VH4\Data\AppDataContext.cs:línea 84
   en Aseinfo.Infrastructure.Base.Entity.GenericEntityRepository.SaveChanges() en c:\VH4\Infrastructure\Base\Entity\GenericEntityRepository.cs:línea 228
   en Aseinfo.Infrastructure.Base.Entity.EntityServiceBase`2.SaveChanges() en c:\VH4\Infrastructure\Base\Entity\EntityServiceBase.cs:línea 530
   en Aseinfo.VH4.Expedientes.Controllers.EmpleadoController.EditInfoConfigurableEmpleo(Empleo entity) en c:\VH4\VH4\Expedientes\Controllers\EmpleadoController.cs:línea 593
   en lambda_method(Closure , ControllerBase , Object[] )
   en System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   en System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
   en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
   en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
   en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
   en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   en System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)

asked 27 Mar '15, 21:32

Jaime%20Menjivar's gravatar image

Jaime Menjivar
(suspended)
accept rate: 16%

edited 27 Mar '15, 21:46

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635

Es de mencionar de que al leer los datos no da problemas, porque los datos que ya están en la base si se pueden ver bien incluyendo el campo que creo que da el error.

(27 Mar '15, 21:37) Jaime Menjivar Jaime%20Menjivar's gravatar image

¿Porqué crees que es un campo del property bag?.

Cuando vos guardas algo en el propertybag, esto se graba en un CLOB y no importa el tipo de datos que le has puesto en la configuración, siempre convierte a string el valor y lo guarda en un string que tiene el XML que le guarda el clob.

¿Qué largo tiene el contenido del propertybag?, hay veces que dá este error cuando queres guardar más de 4000 caracteres en un varchar2, aunque con un CLOB no debería haber límite.

(27 Mar '15, 22:06) Fernando Paz ♦♦ Fernando%20Paz's gravatar image

La razón de este error es un bug en el Oracle Managed Drive (4.121.2.0) que se distribuye con el ODP.Net versión 12.1.021.

El bug se da cuando el servidor de base de datos Oracle está configurado usando el charset AL32UTF8 y se intenta salvar una columna tipo CLOB en cualquier tabla. Ya que al usar este charset el driver en lugar de enviar un dato tipo CLOB envía un VARCHAR2.

Este charset utiliza 4 bytes por carácter, lo que genera que cualquier string que se mande a la base ocupe 4 veces más bytes de lo necesario. Entonces cuando se envía a guardar el PropertyBag a la tabla (como VARCHAR2 en lugar de CLOB por el bug), fácilmente se sobrepasa el límite de 4000 caracteres que impone el servidor Oracle a las cadenas de caracteres.

Para mayor referencia se puede ver la descripción del bug en:

https://community.oracle.com/thread/3649551

link

answered 08 Apr '15, 18:54

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×34
×15

Asked: 27 Mar '15, 21:32

Seen: 12,273 times

Last updated: 08 Apr '15, 18:54

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática