注册

Dm.DmException (0x80004005): 第3 行附近出现错误:\n无法解析的成员访问表达式[\"SYSDBA\".JSON_OVERLAPS]

pfttm 2024/07/26 479 4

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:--03134284172-20240527-229704-20093 Pack5
【操作系统】:Docker
【CPU】: 虚拟化机器
【问题描述】*:
从mysql 迁移到 dm 之后
使用efcore驱动进行查询数据 报错:

Dm.DmException (0x80004005): 第3 行附近出现错误:\n无法解析的成员访问表达式[\"SYSDBA\".JSON_OVERLAPS]\r\n   at Dm.DmCommand.do_ExecuteDbDataReader(CommandBehavior behavior)\r\n   at Dm.DmCommand.ExecuteDbDataReader(CommandBehavior behavior)\r\n   at System.Data.Common.DbCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.InitializeReaderAsync(DbContext _, Boolean result, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Dm.Storage.Internal.DmExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.AsyncEnumerator.MoveNextAsync()\r\n   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)\r\n   at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.SingleAsync[TSource](IAsyncEnumerable`1 asyncEnumerable, CancellationToken cancellationToken)\r\n   at Byzan.Spas.Metadata.Biz.Services.ProjectService.QueryAsync(ProjectQueryBo query, CancellationToken cancellationToken) in D:\\cx\\Byzan\\spas\\Metadata\\byzan.spas.metadata.backend\\src\\Byzan.Spas.Metadata.Biz\\Services\\ProjectService.cs:line 138\r\n   at Byzan.Spas.Metadata.App.Controllers.ProjectController.Get(ProjectQueryDto request, CancellationToken cancellationToken) in D:\\cx\\Byzan\\spas\\Metadata\\byzan.spas.metadata.backend\\src\\Byzan.Spas.Metadata.App\\Controllers\\ProjectController.cs:line 61\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

使用的sdk
<PackageReference Include="DM.Microsoft.EntityFrameworkCore" Version="3.1.0.20604" />

请问这个不是全局函数嘛?为什么报错 SYSDBA 模式下的? SYSDBA 是初始化的账号。

再次尝试

尝试过修改配置:
ORDER_BY_NULLS_FLAG = 2
COMPATIBLE_MODE = 4
JSON_MODE = 2
2、实例级别配置:
CASE_SENSITIVE 设置为 0 ,大小写不敏感
3、新建一个专属用户 DEV_SPAS_METADATA
4、 最后重新迁移数据,并查询
还是查询报错:
Dm.DmException (0x80004005): 第3 行附近出现错误:\n无法解析的成员访问表达式["SYSDBA".JSON_EXTRACT]\r\n

已经不是 SYSDBA 用户 或者是 SYSDBA模式了,为什么还是提示这个异常?

第三次
尝试开了一个.net core 7 的 ef demo项目,并引入:
<PackageReference Include="DM.Microsoft.EntityFrameworkCore" Version="7.0.0.20986" />
还是一样的报错。
感觉报错像是这样一个语句:
image.png

我用的: **DbFunctionAttribute(efcore)**的方式。
是不是真的sdk存在问题。

原生sql尝试
image.png
原生sql的方式,反而执行成功了。表名函数可用

大致猜测
还是sdk存在问题,在组合表达式的时候,把schema加上了,导致以为是自定义的函数。
获取有其他我不知道的参数可以控制?请指教

回答 0
暂无回答
扫一扫
联系客服