/local/rvm/gems/ruby-1.9.2-p320/gems/activerecord-sqlserver-adapter-3.2.12/lib/active_record/connection_adapters/sqlserver_adapter.rb:455:in `initialize': IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified (ODBC::Error)
我有我的应用程序的工作副本,但突然间我离开了我的系统,这个错误开始浮出水面。有谁能告诉你如何解决这个问题?
答案 0 :(得分:9)
由于您没有给我们任何工作,因此您的问题没有明确的答案。
然而,可能的原因是:
在您的用户或系统odbc.ini文件中找不到您指定的DSN 运行odbcinst -j以查找这些文件的位置 有人改变/删除了吗?
您将ODBCINI env var或ODBCSYSINI env var设置为指向odbc.ini和odbcinst.ini文件位置的unixODBC,现在它们未设置(或更改)。
有人删除或移动了您的ODBC驱动程序
您通常以用户A的身份运行代码,现在您以用户B的身份运行它,并且您正在使用用户数据源或设置ODBCINI env var。
...可能是其他人,但如果你给了我们更好的信息,我们就不用猜了。
答案 1 :(得分:7)
您应该从setting up and configuring FreeTDS开始。以下是我的文件中的示例配置,但我确定其他变体也可以使用。一个区别是我使用Django,但下面的结果最终仍然有效,但是使用SQL身份验证比使用Windows身份验证更好。
来自/etc/freetds/freetds.conf
(如果DNS未对服务器名称有效,请使用服务器的IP)。
# A typical Microsoft server
[MyServer]
host = 10.0.0.10\path
port = 1433
tds version = 7.0
来自/etc/odbcinst.ini
[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
来自/etc/odbc.ini
[ServerDSN]
Description = "Some Description"
Driver = FreeTDS
ServerName = MyServer
Server = ip_address
Port = 1433
Database = DBNAME
然后这个命令将我连接到数据库。
tsql -S MyServer -U username@servername -P password
答案 2 :(得分:0)
只是一个提示,在我的情况下,无法使用Driver = FreeTDS以及odbc.ini中的两个变量“servername”和“server”。我只允许“server = ip”和 “Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so”,工作正常。
答案 3 :(得分:0)
请验证以下内容:
这解决了我的问题。