Mor*_*rph 6 debian odbc mariadb
我安装:
sudo apt-get install unixodbc unixodbc-dev
Run Code Online (Sandbox Code Playgroud)
我从这里下载 mariadb-connector-odbc-3.0.2-ga-debian-x86_64.tar.gz https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.0.2/并复制 libmaodbc.so从存档到 /usr/lib/x86_64-linux-gnu/odbc/
接下来我配置odbcinst.ini:
[MariaDB]
Description=MariaDB
Driver=/usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
Setup=/usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage=1
Run Code Online (Sandbox Code Playgroud)
和下一个 odbc.ini:
[ast-con]
Description = MariaDB connection to 'asterisk' database
Driver = MariaODBC
Database = AsteriskDB
Server = localhost
UserName = zk
Password = rt131cvn
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
命令:
root@asterisk:/etc# odbcinst -q -d
[MariaODBC]
Run Code Online (Sandbox Code Playgroud)
接下来我尝试使用 isql 检查 odbc:
root@asterisk:/etc# isql -v ast-con
[01000][unixODBC][Driver Manager]Can't open lib '/usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so # latest stable from https://downloads.mariadb.org/connector-odbc/+releases/' : file not found
[ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)
我尝试搜索谷歌,并找到 1 个解决方案,但它没有帮助:
我设置了 LD_LIBRARY_PATH
root@asterisk:/etc# env
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/odbc
SSH_CONNECTION=xx.xxx.xxx.xxx 64759 xx.xxx.xxx.xx 22
OLDPWD=/root
XDG_SESSION_ID=26153
USER=root
PWD=/etc
HOME=/root
SSH_CLIENT=xx.xxx.xxx.xxx 64759 22
SSH_TTY=/dev/pts/0
MAIL=/var/mail/root
TERM=xterm
SHELL=/bin/bash
SHLVL=1
LOGNAME=root
XDG_RUNTIME_DIR=/run/user/0
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)
下一个命令:
root@asterisk:/etc# ldd /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
linux-vdso.so.1 (0x00007fffad26f000)
libodbcinst.so.2 => /usr/lib/x86_64-linux-gnu/libodbcinst.so.2 (0x00007f5ad171d000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5ad1419000)
libssl.so.1.0.0 => not found
libcrypto.so.1.0.0 => not found
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5ad107a000)
libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 (0x00007f5ad0e6e000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5ad0c51000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5ad1be9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5ad0a4d000)
Run Code Online (Sandbox Code Playgroud)
通常有 libodbcinst.so.1 => not found 然后执行这样的: ln -s libodbcinst.so.1 libodbcinst.so.2.0.0
但我的结果是不同的,我不明白我该怎么办?请帮忙!
小智 5
这很烦人,我将其范围缩小到以下几点:
如果您按照说明进行操作,Debian 将为您安装 libssl-dev,但是 libmaodbc.so 链接到 libssl.so.1.0.0 和 libcrypto.so.1.0.0 -- 因此它会遇到 ENOENT(没有此类文件或目录)试图找到这两个 .so 时,因此抛出“找不到文件”错误(对命令执行 strace 将为您提供找到 libmaodbc.so 文件的详细信息,但没有找到其他两个文件)
即使您确实设法获得了 libssl1.0-dev,它也会删除 FreePBX/Asterisk 所需的其他软件包。
即便如此,它仍然会在 libc.mo 上搜索语言环境 en_US 失败
解决这个问题的方法是找到另一个与 libssl1.1 正确链接的 libmaodbc.so
| 归档时间: |
|
| 查看次数: |
3684 次 |
| 最近记录: |