我一直在挖网上几天,阅读非常古老的信息,这导致了很老的和不存在的网站,我理解,仍然需要达到我的目标.
纠正我,如果我弄错了,请给我更多建议,如何实现这样的联系.
我正在尝试将Redhat Linux连接到Microsoft SQL Server 2008.我已经在Windows(我的测试机器)上设置它时遇到了麻烦,但现在我需要将它部署在将要投入生产的Linux机器上.
所以我已经安装了unixODBC和FreeTDS(需要付出很多努力,甚至不确定它是否安装正确:S),结果是我有3个文件/usr/local/etc:
odbc.ini
odbcinst.ini
freetds.conf
Run Code Online (Sandbox Code Playgroud)
然后我编辑了freetds.conf文件,这是我添加的内容:
[sqlServer]
host = servername
port = 4113
instance = sqlServer
tds version = 8.0
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)
我必须从我的DBA中找到端口号,因为它在SQL Server 2008中设置为动态.
我的odbcinst.ini文件看起来像这样:
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/local/lib/libtdsodbc.so
Setup = /usr/local/lib/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1
Run Code Online (Sandbox Code Playgroud)
我的odbc.ini文件看起来像这样:
[sqlServer]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = 1
Servername = sqlServer
Database = RubyApp …Run Code Online (Sandbox Code Playgroud) 我无法从MSSQL服务器获取有效的字符串到python.我相信在某处存在编码不匹配.我相信它是在ODBC层和python之间,因为我能够在tsql和isql中获得可读的结果.
pyodbc期望什么字符编码?我需要在链中进行哪些更改才能使其正常工作?
具体例子
这是一个简化的python脚本作为示例:
#!/usr/bin/env python
import pyodbc
dsn = 'yourdb'
user = 'import'
password = 'get0lddata'
database = 'YourDb'
def get_cursor():
con_string = 'DSN=%s;UID=%s;PWD=%s;DATABASE=%s;' % (dsn, user, password, database)
conn = pyodbc.connect(con_string)
return conn.cursor()
if __name__ == '__main__':
c = get_cursor()
c.execute("select id, name from recipe where id = 4140567")
row = c.fetchone()
if row:
print row
Run Code Online (Sandbox Code Playgroud)
该脚本的输出是:
(Decimal('4140567'), u'\U0072006f\U006e0061\U00650067')
Run Code Online (Sandbox Code Playgroud)
或者,如果脚本的最后一行更改为:
print "{0}, '{1}'".format(row.id, row.name)
Run Code Online (Sandbox Code Playgroud)
然后结果是:
Traceback (most recent call last):
File "/home/mdenson/projects/test.py", line 20, in <module>
print "{0}, …Run Code Online (Sandbox Code Playgroud) 我在32位计算机上运行Ubuntu 12.04,我想使用freetds,unixodbc和python连接到我的MS SQL数据库,但是我收到一个错误:
>>> import pyodbc
>>> conn = pyodbc.connect('DSN=TS;UID=myusername;PWD=mypassword')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')
Run Code Online (Sandbox Code Playgroud)
这是我的/etc/freetds.conf档案:
[TS]
host = 192.168.254.50
port = 1433
tds version = 7.0
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)
这是我的/etc/odbc.ini档案:
--- /etc/odbc.ini ---
[TS]
Description = "test"
Driver = FreeTDS
Server = 192.168.254.50
Port = 1433
Database = db_name
Run Code Online (Sandbox Code Playgroud)
这是我的/etc/odbcinst.ini档案: …
我正在尝试在我的在线服务器上设置pdo_odbc.我使用putty,我在Linux命令方面有一些基本知识.
一开始,在我的在线服务器上,我没有安装PDO.我找到了安装它的方法,它的工作原理.然后我必须安装pdo_odbc,但我迷路了.安装pdo_mysql非常简单,没有问题.使用pdo_mysql我连接了一些mysql数据库.
但对于pdo_odbc,我陷入困境.A已将自己定位到带有pdo_odbc安装文件的文件夹中,我已运行phpize,然后运行命令
./configure --with-pdo-odbc = unixODBC
然后它告诉我,我需要将18个文件的列表包含在文件夹/ usr/local/include /中,但该文件夹中没有文件.
我的问题是我如何找到(如果我能找到)这些文件所在的位置,或者我需要做什么才能在我的服务器上安装这些文件.
这就是我得到的:
checking for odbc.h in /usr/local/include... no
checking for odbcsdk.h in /usr/local/include... no
checking for iodbc.h in /usr/local/include... no
checking for sqlunix.h in /usr/local/include... no
checking for sqltypes.h in /usr/local/include... no
checking for sqlucode.h in /usr/local/include... no
checking for sql.h in /usr/local/include... no
checking for isql.h in /usr/local/include... no
checking for sqlext.h in /usr/local/include... no
checking for isqlext.h in /usr/local/include... no
checking for udbcext.h in /usr/local/include... no
checking for …Run Code Online (Sandbox Code Playgroud) 我是Asterisk的新手,这是我第一次尝试连接数据库(MySQL).但我一直收到此错误[unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序.这是我的设置:
/etc/odbcinst.int
[Default]
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
;UsageCount = 2
Run Code Online (Sandbox Code Playgroud)
/etc/odbc.ini
[MYSQL-DNS]
Driver =MySQL
Description = MySQL connection to ‘My Voice’ database
Trace = Yes
TraceFile = /tmp/odbc.log
Server =localhost
Port =3306
Database =my_database
UserName =myuser
Password =mypass
Option = 3
Socket =/var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)
/var/lib/asterisk/.profile
export ODBCINI=/etc/odbc.ini
export ODBCSYSINI=/etc
Run Code Online (Sandbox Code Playgroud)
我还将odbcinst.ini和odbc.ini分别复制到〜/ .odbcinst.ini和〜/ .odbc.ini,并复制到/ var/lib/asterisk /只是为了清除所有疑问.
res_odbc.conf
[ENV]
[my_database]
enabled => yes
dsn =>MYSQL-DNS
username => …Run Code Online (Sandbox Code Playgroud) 我想在我的Sails应用程序中安装node-odbc软件包(https://github.com/wankdanker/node-odbc).
根据我在服务器上安装和配置unixobdc的文档,但是当我在app目录中执行npm install odbc --save时,我收到以下错误:
错误的ERR!Linux 3.19.0-58-generic npm ERR!argv"/ usr/bin/nodejs""/ usr/bin/npm""install""odbc""--save"npm ERR!节点v4.4.3 npm ERR!npm v3.8.7
错误的ERR!无法设置未定义的npm ERR属性'waterline-criteria'!错误的ERR!如果您需要帮助,可以在以下位置报告此错误:npm ERR!*LINK {// github.com/npm/npm/issues} npm ERR!Linux 3.19.0-58-generic npm ERR!argv"/ usr/bin/nodejs""/ usr/bin/npm""install""odbc""--save"npm ERR!节点v4.4.3 npm ERR!npm v3.8.7
错误的ERR!无法设置未定义的npm ERR属性'waterline-cursor'!错误的ERR!如果您需要帮助,可以在以下位置报告此错误:npm ERR!*LINK {// github.com/npm/npm/issues} npm ERR!Linux 3.19.0-58-generic npm ERR!argv"/ usr/bin/nodejs""/ usr/bin/npm""install""odbc""--save"npm ERR!节点v4.4.3 npm ERR!npm v3.8.7
错误的ERR!无法设置未定义的npm ERR属性'waterline-errors'!错误的ERR!如果您需要帮助,可以在以下位置报告此错误:npm ERR!*LINK {// github.com/npm/npm/issues}
错误的ERR!请在任何支持请求中包含以下文件:npm ERR!/var/www/sails.dev/secApp/npm-debug.log
关于为什么会这样或者如何让这个包在Sails中运行的任何想法?
我已按照此处的说明安装/配置了驱动程序:
出现错误:[S1000][unixODBC][Snowflake][ODBC] (11560) 无法找到 SQLGetPrivateProfileString 函数。
我发现一篇文章说要安装并使用另一个驱动程序(libodbcinst.so.2),但这也不起作用。
我使用的是 Ubuntu 18.04
这是调试:
$ isql -v snowflake_dev my_username my_password
2020-01-02T20:48:43.123 INFO 4442 Snowflake::Client::IFileTransferAgent.cpp::: External logger injected. libsnowflakeclient version: 0.4.2
Jan 02 20:48:43 INFO 2785285952 SharedSingletonManager::LogVersions: SDK Version: 10.01.15.1109
Jan 02 20:48:43 INFO 2785285952 SharedSingletonManager::LogVersions: DSII Version: 2.20.2
Jan 02 20:48:43 INFO 2785285952 Driver::Initialize: Database CHAR Encoding: UTF-8
Jan 02 20:48:43 INFO 2785285952 Driver::Initialize: Database WCHAR Encoding: UTF-32LE
Jan 02 20:48:43 INFO 2785285952 Driver::Initialize: Driver ANSI CHAR Encoding: UTF-8
Jan 02 20:48:43 …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 macOS 10.15.4 下使用 pyodbc 和 unixODBC 从 Jupyter 笔记本连接到 MSSQL 服务器。我刚刚将 OSX 升级到 Catalina,之前的工作配置已损坏。
我尝试连接:
pyodbc.connect('Driver={ODBC Driver 13 for SQL Server};Server=xxx;Database=xxx;uid=xxx;pwd=xxx;')
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/local/lib/libmsodbcsql.13.dylib' : file not found (0) (SQLDriverConnect)")
Run Code Online (Sandbox Code Playgroud)
但该文件存在,并且由 obdcinst.ini 中的驱动程序指向,并且链接似乎正确。
为了跟踪这一点,我运行:
$ odbcinst -j
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /Users/johnmorgan/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Run Code Online (Sandbox Code Playgroud)
驱动文件存在,如下:
$ more /etc/odbcinst.ini
[ODBC Driver 13 for SQL Server]
Description=Microsoft …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置 unixODBC 来访问 Amazon Redshift,但不断收到此错误,我已经三次检查了我的设置,但不确定问题是什么
> isql -v mlaws
[01000][unixODBC][Driver Manager]Can't open lib '/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so' : file not found
[ISQL]ERROR: Could not SQLConnect
Run Code Online (Sandbox Code Playgroud)
以下是我的文件和详细.odbc.ini信息odbcinst.ini
我当前的odbcinst -j设置是
unixODBC 2.3.4
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/fuxi/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
Run Code Online (Sandbox Code Playgroud)
我的odbcinst.ini文件有适当的 Redshift 驱动程序,
[PostgreSQL ANSI]
Description=PostgreSQL ODBC driver (ANSI version)
Driver=psqlodbca.so
Setup=libodbcpsqlS.so
Debug=0
CommLog=1
UsageCount=1
[PostgreSQL Unicode]
Description=PostgreSQL ODBC driver (Unicode version)
Driver=psqlodbcw.so …Run Code Online (Sandbox Code Playgroud) unixodbc ×10
freetds ×3
odbc ×2
php ×2
pyodbc ×2
python ×2
asterisk ×1
jet ×1
ms-access ×1
mysql ×1
node-odbc ×1
pdo ×1
putty ×1
redhat ×1
sails.js ×1
snowflake-cloud-data-platform ×1
sql-server ×1
ubuntu-12.04 ×1
ubuntu-18.04 ×1
unicode ×1