gpt4 book ai didi

ruby-on-rails - SQL Server 和 Rails 的麻烦

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:33 25 4
gpt4 key购买 nike

注意:这是转贴。此问题之前因未公开的原因被删除

好吧,我现在一整天都在努力让它正常工作,距离我开始时几乎没有任何进展。

我正在尝试让 Ruby On Rails 连接到 SQL Server。我已经安装并配置了 unixODBC 和 FreeTDS,并安装了几乎所有与 ODBC 相关的 Ruby gem。

(已更新以显示带有 -v 的 isql 的输出)

[earlz@earlzarch myproject]$ tsql -S AVP1 -U sa -P pass
locale is "en_US.UTF-8"
locale charset is "UTF-8"
1> quit
[earlz@earlzarch ~]$ isql -v AVP1 sa pass
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
[earlz@earlzarch myproject]$ rake db:version
(in /home/earlz/myproject)
rake aborted!
IM002 (0) [unixODBC][Driver Manager]Data source name not found, and no default driver specified

(See full trace by running task with --trace)

因此,如您所见,tsql 有效,但 isql 无效。打破它的两个有什么区别?

/etc/odbc.ini

[AVP1]
Description = ODBC connection via FreeTDS
Driver = TDS
Servername = my.server
UID = sa
PWD = pass
port = 1232
Database = mydatabase

/etc/odbcinst.ini

[TDS]
Description = v0.6 with protocol v7.0
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
CPTimeout =
CPReuse =
FileUsage = 1

(是的,我已经确保 .so 文件存在)

freetds.conf中的相关部分

[AVP1]
host = my.server
port = 1232
tds version = 8.0

最后,我的 database.yml

development:
adapter: sqlserver
mode: odbc
dsn: AVP1
username: sa
password: pass

在我拔掉所有头发之前,有人能帮帮我吗?

我使用的是完全最新的 64 位 Arch Linux。

可能导致 isql 失败的原因。对于这个问题,我已经尝试了迄今为止所见过的所有解决方案,但实际上没有一个对我有用。我必须重新编译 FreeTDS 还是什么?

好的,我还用 strace 验证了它正在查找配置文件,如以下摘录所示:

open("/etc/odbc.ini", O_RDONLY)         = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=159, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fc71fe09000
read(3, "[AVP1]\n Description = ODBC "..., 4096) = 159

最佳答案

如果有人已经让 tsql 工作,但在 Internet 上广泛搜索并解决了他们的配置问题,但仍然无法让 isql 工作,请检查您的服务器日志。

我已经对 Xubuntu 12.04 unixodbc 安装和配置进行了一周的故障排除,当我决定检查我的 Windows Server 事件查看器以查看请求进入服务器时发生了什么,或者如果一个请求甚至进入服务器并发现问题是我无法进入特定数据库。我能够正常进入 SQL Server,但无法进入我在 odbc.ini 文件中列出的实际数据库。

这是事件日志“用户‘ePMX’登录失败”中的具体文本。

Reason: Failed to open the explicitly specified database. [CLIENT: 192.168.27.25]".

引起我兴趣的是“明确”这个词。所以我简单地注释掉了Database = <DB Name>突然一切正常,经过无数小时的研究和尝试一切可能的方法后,我得到了 SQL 提示。

因此,如果您在使用 unixodbc 时遇到问题,请不要忘记对服务器端和客户端进行故障排除,因为我看过很多帖子,人们遇到了与我遇到的完全相同的问题,但从来没有任何回应如何解决它,所以我猜测遇到问题的很多人都是服务器端问题。

要获得出色的故障排除工具,请使用 osql 而不是 isql(osql 实际上使用 isql 进行连接),因为它会逐步完成连接过程,并为您提供有关故障发生位置的详细信息。它的使用方式与您使用 isql 的方式相同: osql <DSN> <user> <password>.

所以正如我所说,如果您已经尝试了所有其他方法但仍无法找出问题所在,请务必检查您的服务器日志。

关于ruby-on-rails - SQL Server 和 Rails 的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6377999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com