Excel + npgsql + postgres。指定的转换无效异常

Excel + npgsql + postgres. Specified cast is not valid exception

我正在尝试使用 Power Query 和 Npgsql 连接器连接我的 MS Excel 2013 Pro+ 和 PostgreSQL 数据库。

一切似乎都很好,直到 - 我将尝试 运行 自定义查询(例如 select * 来自 table)。然后 - 出现一条错误消息:"The specified cas is not valid"。如果我将使用数据库结构浏览器 - 我可以 select table 或查看并点击 'Load' 但它也会给我同样的错误。

是我做错了什么,还是连接器有问题?

这是来自 Excel 的堆栈跟踪:

Feedback Type:

皱眉(错误)

时间戳: 2017-08-21T09:14:00.7435203Z

当地时间: 2017-08-21T11:14:00.7435203+02:00

产品版本: 2.48.4792.941 (PQ-CY17SU07) (x86)

发布: 2017 年 7 月

Excel版本: 15.0.4420.1017

Excel 安装位置: C:\Program Files\Microsoft Office\Office15\EXCEL.EXE

浏览器版本: 11.0.9600.17843

OS版本: 微软 Windows NT 6.1.7601 Service Pack 1 (x86 pl-PL)

CLR 版本: 4.6.1 或更高版本 [版本号 = 394271]

工作簿包信息: 1* - en-US,查询组:0,fastCombine:已禁用,运行BackgroundAnalysis:True。

峰值工作组: 268MB

私人记忆: 231MB

峰值虚拟内存: 930 MB

错误信息: 指定的转换无效。

堆栈跟踪: Microsoft.Mashup.Evaluator.Interface.ErrorException: 指定的转换无效。 ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: 指定的转换无效。 ---> Microsoft.Mashup.Evaluator.Interface.ErrorException: 指定的转换无效。 ---> System.InvalidCastException: 指定的转换无效。 ---> System.InvalidCastException: 指定的转换无效。 在 Microsoft.OleDb.Serialization.PageWriter.WriteSchema(数据表架构表) 在 Microsoft.OleDb.Serialization.OleDbPageWriter..ctor(Stream stream, DataTable schemaTable) 在 Microsoft.Mashup.Evaluator.RemotePageReader.<>c__DisplayClass7.b__0() 在 Microsoft.Mashup.Evaluator.EvaluationHost.ReportExceptions(IHostTrace 跟踪、IEngineHost engineHost、IMessageChannel 通道、Action 操作) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Mashup.Evaluator.EvaluationHost.<>c__DisplayClass7.b__6() 在 Microsoft.Mashup.Common.SafeExceptions.IgnoreSafeExceptions(IEngineHost 主机、IHostTrace 跟踪、操作操作) 在 Microsoft.Mashup.Evaluator.EvaluationHost.TryReportException(IHostTrace 跟踪,IEngineHost engineHost,IMessageChannel 通道,Exception 异常) 在 Microsoft.Mashup.Evaluator.EvaluationHost.ReportExceptions(IHostTrace 跟踪、IEngineHost engineHost、IMessageChannel 通道、Action 操作) 在 Microsoft.Mashup.Evaluator.RemotePageReader.运行Stub(IEngineHost engineHost,IMessageChannel 通道,Func1 getPageReader) at Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.Service.<>c__DisplayClass11.<OnBeginGetDataReaderSource>b__f(EvaluationResult21 结果) 在 Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.Service.<>c__DisplayClass1e1.<OnBeginGetResult>b__1b() at Microsoft.Mashup.Evaluator.EvaluationHost.ReportExceptions(IHostTrace trace, IEngineHost engineHost, IMessageChannel channel, Action action) at Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.Service.OnBeginGetResult[T](IMessageChannel channel, BeginGetResultMessage message, Action1 次操作) 在 Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.Service.OnBeginGetDataReaderSource(IMessageChannel 频道,BeginGetDataReaderSourceMessage 消息) 在Microsoft.Mashup.Evaluator.MessageHandlers.<>c__DisplayClassa1.<AddHandler>b__8(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.MessageHandlers.TryDispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.ChannelMessenger.ChannelMessageHandlers.TryDispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.MessageHandlers.Dispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.ChannelMessenger.OnMessageWithUnknownChannel(IMessageChannel baseChannel, MessageWithUnknownChannel messageWithUnknownChannel) at Microsoft.Mashup.Evaluator.MessageHandlers.<>c__DisplayClassa1.b__8(IMessageChannel频道,Message消息) 在 Microsoft.Mashup.Evaluator.MessageHandlers.TryDispatch(IMessageChannel 频道, Message 消息) at Microsoft.Mashup.Evaluator.ChannelMessenger.ChannelMessageHandlers.TryDispatch(IMessageChannel 频道, Message 消息) at Microsoft.Mashup.Evaluator.MessageHandlers.Dispatch(IMessageChannel 频道, Message 消息) 在 Microsoft.Mashup.Evaluator.EvaluationHost.运行() 在 Microsoft.Mashup.Container.EvaluationContainerMain.Run(对象参数) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass2.b__0(对象 o) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass15.b__14(对象 o) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass2.b__1(对象 o) 在 Microsoft.Mashup.Container.EvaluationContainerMain.SafeRun(字符串[] 参数) 在 Microsoft.Mashup.Container.EvaluationContainerMain.Main(字符串 [] 参数) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.Mashup.Evaluator.EvaluationHost.OnException(IEngineHost engineHost,IMessageChannel 通道,ExceptionMessage 消息) 在 Microsoft.Mashup.Evaluator.RemoteEvaluationContainerFactory.Container.OnException(IMessageChannel 通道,ExceptionMessage 消息) at Microsoft.Mashup.Evaluator.MessageHandlers.<>c__DisplayClassa1.<AddHandler>b__8(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.MessageHandlers.TryDispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.MessageHandlers.Dispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.ChannelMessenger.ChannelMessageHandlers.TryDispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.MessageHandlers.Dispatch(IMessageChannel channel, Message message) at Microsoft.Mashup.Evaluator.Interface.IMessageChannelExtensions.WaitFor[T](IMessageChannel channel) at Microsoft.Mashup.Evaluator.MessageBasedInputStream.ReadNextChunkAndCheckIfClosed() at Microsoft.Mashup.Evaluator.MessageBasedInputStream.ReadNextChunk() at Microsoft.Mashup.Evaluator.ChunkedInputStream.Read(Byte[] buffer, Int32 offset, Int32 count) at System.IO.BinaryReader.FillBuffer(Int32 numBytes) at System.IO.BinaryReader.ReadInt32() at Microsoft.Mashup.Evaluator.ITableSourceSerializationExtensions.ReadITableSource(BinaryReader reader) at Microsoft.Mashup.Evaluator.RemotePageReader.CreateProxy(IEngineHost engineHost, IMessageChannel channel, ExceptionHandler exceptionHandler) at Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.DataReaderSourceRemoteEvaluation.GetResult(Boolean enableFirewall) at Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.RemoteEvaluation.Evaluate(Boolean enableFirewall) --- End of inner exception stack trace --- at Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.RemoteEvaluation1.TryCompleteWithException(异常异常) 在 Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.RemoteEvaluation.Evaluate(布尔启用防火墙) 在 Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.EvaluationThread(对象状态) 在 Microsoft.Mashup.Evaluator.GlobalizedEvaluatorThreadPool.<>c__DisplayClass4.b__3(对象 s) 在 Microsoft.Mashup.Evaluator.EvaluatorThreadPool.EvaluatorThread(对象状态) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass2.b__0(对象 o) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass15.b__14(对象 o) 在 Microsoft.Mashup.Evaluator.SafeThread2.<>c__DisplayClass2.b__1(对象 o) 在 System.Threading.ThreadHelper.ThreadStart_Context(对象状态) 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态、布尔值 preserveSyncCtx) 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback 回调、对象状态) 在 System.Threading.ThreadHelper.ThreadStart(对象对象) --- 内部异常堆栈跟踪结束 ---

服务器堆栈跟踪:

在 [0] 重新抛出异常: 在 Microsoft.OleDb.AsyncResult1.get_Value() at Microsoft.Mashup.OleDbProvider.DataHost.BufferingMashupEvaluator.BufferingMashupEvaluation.GetBufferedReaderSource(AsyncResult1 个结果) 在 Microsoft.Mashup.OleDbProvider.DataHost.BufferingMashupEvaluator.BufferingMashupEvaluation.OnEvaluationComplete(AsyncResult`1 结果)

在 [1] 重新抛出异常: 在 Microsoft.Mashup.Host.ProviderShared.MashupResource.GetStatus() 在 Microsoft.Mashup.Client.Excel.Fill.PollingFillDownloadWorker.b__1() 在 Microsoft.Mashup.Client.Excel.Fill.PollingFillDownloadWorker.InvokeWorker(Func`1 操作)

调用堆栈跟踪: 在 Microsoft.Mashup.Host.Document.ExceptionExtensions.GetCurrentInvocationStackTrace() 在 Microsoft.Mashup.Client.ClientShared.StackTraceInfo..ctor(字符串异常堆栈跟踪,字符串调用堆栈跟踪) 在 Microsoft.Mashup.Client.ClientShared.FeedbackErrorInfo..ctor(字符串消息,可为 Nullable1 errorCode, String requestId, Exception exception) at Microsoft.Mashup.Client.ClientShared.UnexpectedExceptionHandler.<>c__DisplayClass1.<HandleException>b__0() at Microsoft.Mashup.Host.Document.SynchronizationContextExtensions.SendAndMarshalExceptions(SynchronizationContext context, Action callback) at Microsoft.Mashup.Client.ClientShared.UnexpectedExceptionHandler.HandleException(Exception e) at Microsoft.Mashup.Client.Excel.Fill.FillSession.HandleDownloaderException(IWorkbook workbook, Exception e) at Microsoft.Mashup.Client.Excel.Fill.PollingInitialFillSession.FillDownloadResult(IWorkbook workbook, Boolean onTimer) at Microsoft.Mashup.Client.Excel.Fill.PollingInitialFillSession.<>c__DisplayClass4.<ResumeFill>b__0() at Microsoft.Mashup.Client.Excel.Fill.IUndoServicesExtensions.<>c__DisplayClass2.<InvokeWithConditionalDiscardedUndoScope>b__0(IUndoScope undoScope) at Microsoft.Mashup.Client.Excel.Shim.AddInUndoServices.InvokeUndoableAction(IWorkbook workbook, UndoableActionType actionType, Action1 操作) 在 Microsoft.Mashup.Client.Excel.Fill.IUndoServicesExtensions.InvokeWithConditionalDiscardedUndoScope(IUndoServices undoServices,布尔条件,IWorkbook 工作簿,UndoableActionType actionType,Action 操作) 在 Microsoft.Mashup.Client.Excel.Fill.PollingInitialFillSession.ResumeFill(布尔 onTimer) 在 Microsoft.Mashup.Client.Excel.PollingFillManager.b__7(IFillSession fillSession) 在 Microsoft.Mashup.Client.ClientShared.Model.QueriesUtilities.ForEachWithChangeScope[T](IEnumerable1 items, Func2 getQueries,Action1 action) at Microsoft.Mashup.Client.Excel.Fill.FillManager.ForEachFillSessionByWorkbook(Action1 操作) 在 Microsoft.Mashup.Client.Excel.PollingFillManager.UpdateQueries() 在 Microsoft.Mashup.Client.Excel.PollingFillManager.b__6() 在 Microsoft.Mashup.Host.Document.ExceptionHandlerExtensions.HandleExceptions(IExceptionHandler 异常处理程序,操作操作) 在 Microsoft.Mashup.Client.Excel.PollingFillManager.OnFillUpdateTimerTick(对象发送者,EventArgs eventArgs) 在 System.Windows.Forms.Timer.OnTick(EventArgs e) 在 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(留言&米) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

用户编号: f1b43d3f-ed65-4886-993e-0d6507a0de3f

支持优质内容: 真

遥测启用: 真

DPI 比例: 100%

公式:

第 1 节;

共享#"DataRecords Campaign_000008" = 让 Źródło = PostgreSQL.Database("10.100.120.18", "ContactDirect"), DataRecords_Campaign_000008 = ródło{[Schema="DataRecords",Item="Campaign_000008"]}[数据] 在 DataRecords_Campaign_000008;

共享#"DataRecords Campaign_000008_ChangeLog" = 让 Źródło = PostgreSQL.Database("10.100.120.18", "ContactDirect"), DataRecords_Campaign_000008_ChangeLog = ródło{[Schema="DataRecords",Item="Campaign_000008_ChangeLog"]}[数据] 在 DataRecords_Campaign_000008_ChangeLog;

答案是:npgsql 3.2.5 中的错误 - 安装 3.1.9 后 - 一切正常 gr8 ;)