Julia言語で文字列が含まれるSQLiteのテーブルをDataFrameに格納した時にエラーが発生したことについて
私はJulia言語を今年の2月から始めたものです。
この数ヵ月で発生した変な現象について質問に記載し,
どのように解決したか他の人の参考のためにここに残しておきたいと思います。
SQLiteパッケージで文字列(text)が含まれるテーブルをDataFrameに格納しようとした時にエラーが発生しました。
エラーが発生するプログラムの例を次に示します。
julia
1using SQLite 2using DataFrames 3 4db = SQLite.DB("test.db") 5df = DBInterface.execute(db, "SELECT * FROM test") |> DataFrame 6 7println(df)
エラー表示を次に示します。
julia> include("test.jl") ERROR: LoadError: MethodError: promote_type(::Type{Union{}}, ::Type{String}) is ambiguous. Candidates: promote_type(::Type{Union{}}, ::Type{T}) where T in Base at promotion.jl:224 promote_type(::Type{T}, ::Type{String}) where T<:WeakRefStrings.InlineString in WeakRefStrings at /home/ujimushi/.julia/packages/WeakRefStrings/a3jYm/src/inlinestrings.jl:44 Possible fix, define promote_type(::Type{Union{}}, ::Type{String}) Stacktrace: [1] add_or_widen!(val::String, col::Int64, nm::Symbol, dest::Tables.EmptyVector, row::Int64, updated::Base.RefValue{Any}, L::Base.SizeUnknown) @ Tables ~/.julia/packages/Tables/OWzlh/src/fallbacks.jl:150 [2] eachcolumns @ ~/.julia/packages/Tables/OWzlh/src/utils.jl:127 [inlined] [3] _buildcolumns(rowitr::SQLite.Query, row::SQLite.Row, st::Int64, sch::Tables.Schema{(:id, :name), nothing}, columns::Tuple{Tables.EmptyVector, Tables.EmptyVector}, updated::Base.RefValue{Any}) @ Tables ~/.julia/packages/Tables/OWzlh/src/fallbacks.jl:187 [4] buildcolumns @ ~/.julia/packages/Tables/OWzlh/src/fallbacks.jl:217 [inlined] [5] columns @ ~/.julia/packages/Tables/OWzlh/src/fallbacks.jl:253 [inlined] [6] DataFrame(x::SQLite.Query; copycols::Nothing) @ DataFrames ~/.julia/packages/DataFrames/vuMM8/src/other/tables.jl:58 [7] DataFrame @ ~/.julia/packages/DataFrames/vuMM8/src/other/tables.jl:49 [inlined] [8] |>(x::SQLite.Query, f::Type{DataFrame}) @ Base ./operators.jl:858 [9] top-level scope @ ~/test.jl:5 [10] include(fname::String) @ Base.MainInclude ./client.jl:444 [11] top-level scope @ REPL[4]:1 in expression starting at /home/ujimushi/test.jl:5
Juliaのバージョンは1.6.4(1.6.3や1.6.2でも再現)で,インストールしているパッケージは次の通りです。
(@v1.6) pkg> status Status `~/.julia/environments/v1.6/Project.toml` [15f4f7f2] AutoHashEquals v0.2.0 [ad839575] Blink v0.12.5 [336ed68f] CSV v0.8.5 [a93c6f00] DataFrames v1.2.2 [28b8d3ca] GR v0.62.1 [945b72a4] MarketData v0.13.7 [58dd65bb] Plotly v0.4.1 [a03496cd] PlotlyBase v0.8.18 [f0f68f2c] PlotlyJS v0.18.8 [91a5bcdd] Plots v1.25.0 [0aa819cd] SQLite v1.3.0 [9e3dc215] TimeSeries v0.23.0 [ea10d353] WeakRefStrings v1.1.0
このエラーの原因と解決方法を調査して解決しました。回答に示します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。