我正在尝试为Lua安装ODBC驱动程序(?)。我正在运行Windows 10,并按照http://www.thijsschreijer.nl/blog/?p=863上的说明进行操作 只要命令“ lua -l socket”
这是我的命令和结果的屏幕副本
C:\ Program Files(x86)\ LuaRocks> luarocks安装luasql-odbc
安装https://luarocks.org/luasql-odbc-2.4.0-1.src.rockC:\ MinGW \ bin \ gcc.exe -O2 -c -o src / luasql.o -IC:\ Program Files (x86)\ Lua \ 5_3 \ include src / luasql.c -Ic:/ mingw / include
C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / ls_odbc.o -IC:\ Program Files (x86)\ Lua \ 5_3 \ include src / ls_odbc.c -Ic:/ mingw / include
C:\ MinGW \ bin \ gcc.exe-共享-o luasql / odbc.dll src / luasql.o src / ls_odbc.o -Lc:/ mingw -lodbc C:\ Program档案 (x86)\ Lua \ 5_3 \ bin / lua53.dll -lm
c:/ mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe: 找不到-lodbc collect2.exe:错误:ld返回1个退出状态错误:构建错误:编译模块luasql / odbc.dll失败
由于我是C程序等整个概念的新手,所以很可能是我缺少了一些专家会说的“嗯,显然他已经做到了这一点,或者其他”。不要打赌!
我下载了luasql-master.zip,但不确定是否需要将其解压缩/复制到特定的luarocks(?)库。
我应该指出,我可以使用Reginald Rexx和ODBC在同一台计算机上访问DB2 Express数据库,因此ODBC可用性不应该是一个问题,但是也许我确实需要将一些文件复制到某个地方或其他。
任何建议都值得赞赏(我一直在谷歌搜索,直到我的眼睛流血为止,但是人们附加的所有问题似乎都与他们在安装相关的LuaSQL驱动程序后访问任何数据库有关)。
经过更多实验后添加,我尝试使用--verbose选项运行安装。这些是相关的(?)结果(我的完整输出保存在了桌面上)
os.execute:C:和cd“ C:\ Users \ Michael \ AppData \ Local \ Temp \ luarocks_luasql-odbc-2.4.0-1-209 \ luasql”&“ C:\ Program Files(x86)\ LuaRocks / tools / mkdir.exe“ -p” luasql“ 结果:3 1(布尔值):true 2(字符串):退出 3(数字):0 C:\ MinGW \ bin \ gcc.exe-共享-o luasql / odbc.dll src / luasql.o src / ls_odbc.o -Lc:/ mingw -lodbc c:\程序文件(x86)\ lua \ 5_3 \ bin /lua53.dll -lm
os.execute:C:和cd“ C:\ Users \ Michael \ AppData \ Local \ Temp \ luarocks_luasql-odbc-2.4.0-1-209 \ luasql”&C:\ MinGW \ bin \ gcc.exe -共享的“ -o”“ luasql / odbc.dll”“ src / luasql.o”“ src / ls_odbc.o”“ -Lc:/ mingw”“ -lodbc”“ c:\ program files(x86)\ lua \ 5_3 \ bin \ lua53.dll“” -lm“ c:/ mingw / bin /../ lib / gcc / mingw32 / 8.2.0 /../../../../ mingw32 / bin / ld.exe:找不到-lodbc collect2.exe:错误:ld返回1退出状态 结果:3 1(无):无 2(字符串):退出 3(数字):1
错误:构建错误:编译模块luasql / odbc.dll失败
虽然我认为Val非常适合我,但我不禁以为他(?)偏离了他关于odbc.dll的评论。我的印象是安装过程中将创建odbc.dll(或者我错了吗?)。我的感觉是MinGw中可能缺少某些东西?
答案 0 :(得分:0)
经过大量的实验,我在https://www.progress.com/tutorials/odbc/connecting-to-hive-from-lua-using-an-odbc-driver找到了东西。
阅读此书后,我想到了“到底什么”,并尝试了以下操作:-
家禽安装odbc
这是我的打印输出
C:>羽扇安装odb
安装https://luarocks.org/odbc-0.3.1-1.src.rockC:\ MinGW \ bin \ gcc.exe -O2 -c -o src / l52util.o -Ic:\ program文件 (x86)\ lua \ 5_3 \ include src / l52util.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lcnn.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / lcnn.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lenv .o -ic:\ program files(x86)\ lua \ 5_3 \ include src / lenv.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lerr.o -Ic:\ program文件 (x86)\ lua \ 5_3 \ include src / lerr.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / libopt.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / libopt.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lodbc .o -IC:\程序文件(x86)\ lua \ 5_3 \ include src / lodbc.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lstmt.o -Ic:\ program文件 (x86)\ lua \ 5_3 \ include src / lstmt.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / lval.o -Ic:\程序文件(x86)\ lua \ 5_3 \ include src / lval.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / parlist .o -ic:\ program files(x86)\ lua \ 5_3 \ include src / parlist.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -O2 -c -o src / utils.o -Ic:\ program文件 (x86)\ lua \ 5_3 \ include src / utils.c -DUNIXODBC -DLUAODBC_EXPORTS -DLODBC_ERROR_AS_OBJECT -DLODBC_MIN_PAR_BUFSIZE = 64 -I./include -Ic:/ external / include C:\ MinGW \ bin \ gcc.exe -shared -o odbc / core.dll src / l52util.o src / lcnn.o src / lenv .o src / lerr.o src / libopt.o src / lodbc.o src / lstmt.o src / lval.o src / parlist.o src / utils.o -lc:/ external -lodbc32 -lodbccp32 c:\ program files(x86)\ lua \ 5_3 \ bin / lua53.dll -lm odbc 0.3.1-1现在已安装在 c:\ program files(x86)\ lua \ 5_3 \(许可证:MIT / X11)
好吧,那真是出乎意料!!!
在下一个测试中,让我们看看是否可以从Zerobrane内部通过ODBC连接到DB2 Express。
这是我的代码
odbc = require "odbc"
dbassert = odbc.assert
print("About to connect")
cnn = odbc.connect('DB2 Express', 'windows_userid', 'windows_pw')
if cnn == nil then
print("Could not connect")
return
else
print("Successful connection")
end
stmt = cnn:execute('SELECT count(*) FROM windows_userid.act')
print("After execute and select")
stmt:foreach(function(f1)
i = i or 0
i = i + 1
print("After foreach i ",i)
print("count ", f1, i);
end)
assert(stmt:closed()) -- foreach close cursor
assert(not stmt:destroyed()) -- statement valid
...以及脚本的输出
关于连接
连接成功
执行后选择
经过foreach i 1
数18 1
现在可以尝试学习Lua,然后应用所有这些内容了,但是最后,我在路上!