已解决的JULIA ODBC.query MethodError:没有与每个列匹配的方法

问题描述 投票:2回答:2

我一直在使用Julia取得一些图形结果,使用ODBC连接MS Access数据库以获取数据。相同的功能在两周前完美地工作了,但是现在它抛出一个错误:

ERROR: MethodError: no method matching eachcolumn(::Tables.CopiedColumns{NamedTuple{(:year, :Fact),Tuple{Array{Union{Missing, Int16},1},Array{Union{Missing, Float64},1}}}})

Closest candidates are:
  eachcolumn(::Union{Function, Type}, ::Tables.Schema{names,nothing}, ::Any) where names at C:\Users\myuser\.julia\packages\Tables\TA7NF\src\utils.jl:109
  eachcolumn(::Union{Function, Type}, ::Tables.Schema{names,types}, ::Any) where {names, types} at C:\Users\myuser\.julia\packages\Tables\TA7NF\src\utils.jl:66

Stacktrace:

 [1] #fromcolumns#410(::Bool, ::typeof(DataFrames.fromcolumns), ::Tables.CopiedColumns{NamedTuple{(:anno, :Fact),Tuple{Array{Union{Missing, Int16},1},Array{Union{Missing, Float64},1}}}}) at C:\Users\myuser\.julia\packages\DataFrames\yH0f6\src\other\tables.jl:13

 [2] (::DataFrames.var"#kw##fromcolumns")(::NamedTuple{(:copycols,),Tuple{Bool}}, ::typeof(DataFrames.fromcolumns), ::Tables.CopiedColumns{NamedTuple{(:anno, :Fact),Tuple{Array{Union{Missing, Int16},1},Array{Union{Missing, 
Float64},1}}}}) at .\none:0

 [3] #DataFrame#412(::Bool, ::Type{DataFrame}, ::ODBC.Query{missing,NamedTuple{(:anno, :Fact),Tuple{Union{Missing, Int16},Union{Missing, Float64}}},Tuple{Array{Union{Missing, Int16},1},Array{Union{Missing, Float64},1}}}) at C:\Users\myuser\.julia\packages\DataFrames\yH0f6\src\other\tables.jl:32

 [4] DataFrame(::ODBC.Query{missing,NamedTuple{(:anno, :Fact),Tuple{Union{Missing, Int16},Union{Missing, Float64}}},Tuple{Array{Union{Missing, Int16},1},Array{Union{Missing, Float64},1}}}) at C:\Users\myuser\.julia\packages\DataFrames\yH0f6\src\other\tables.jl:23

 [5] #query#15(::Bool, ::Bool, ::Dict{Int64,Function}, ::typeof(ODBC.query), ::ODBC.DSN, ::String, ::Type{DataFrame}) at C:\Users\myuser\.julia\packages\ODBC\YEzHX\src\Query.jl:390

 [6] query(::ODBC.DSN, ::String, ::Type{DataFrame}) at C:\Users\myuser\.julia\packages\ODBC\YEzHX\src\Query.jl:385

 [7] query(::ODBC.DSN, ::String) at C:\Users\myuser\.julia\packages\ODBC\YEzHX\src\Query.jl:376

 [8] top-level scope at C:\Users\myuser\Documents\Fact.jl:94

似乎在Query.jl和table.jl之间存在某种不兼容性

这里是使用的代码:

 using DataFrames
 using DataStreams
 using ODBC
 using StatsBase
 using Plots

 myDNS = ODBC.DSN("Driver={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=C:/Users/myuser/Documents/Data.accdb")

 strFactQuery = "SELECT YEAR(FFact) AS anno, SUM(Invoiced) AS Fact FROM Invoices GROUP BY YEAR(FFact)"
 FactResults = ODBC.query(myDNS, strFactQuery)

有人遇到同样的问题吗?也许是Query.jl错误?

问候

odbc julia access
2个回答
0
投票

降级为Tables v 0.2.11解决了这个问题,但是能够获得该版本是PITA,因为通过pkg mannager进行降级是不可能的,因为某些依赖问题,所以总的来说,我去了github,选择了该版本,将代码复制并粘贴到我的环境中的库代码上……可能不是很简单,但是可以。


0
投票

Guaica潜水,请您分享您对环境所做的更改?因为我的ODBC.query最近也停止了工作,它将对很多人都有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.