繁体   English   中英

如何在ruby配置中设置实例名称数据库

[英]How to set instance name database in ruby configuration

我的应用程序(ruby on rails)在linux中,我需要在Sql Server数据库中连接。

在命令行中测试我得到:

$tsql -LH 10.10.10.10

  ServerName MYCOMPSRV10
InstanceName SQL2008R2
 IsClustered No
     Version 10.50.4000.0
         tcp 58891

我可以使用命令行访问数据库:

 $tsql -S 10.10.10.10\\SQL2008R2 -U username

所以,在我的Ruby on Rails应用程序中,我有这个代码的database.yml:

development:
  adapter: sqlserver
  host: 10.10.10.10
  database: MyDatabase
  username: username
  password: password
  port: 1433 
  pool: 5
  timeout: 5000 

但是,当我尝试运行应用程序时,我得到:

TinyTds::Error: Unable to connect: Adaptive Server is unavailable or does not exist

如果我更改配置,请尝试添加数据库实例名称:

development:
  adapter: sqlserver
  host: '10.10.10.10\SQL2008R2'
  database: MyDatabase
  username: username
  password: password
  port: 1433 
  pool: 5
  timeout: 5000 

并尝试运行应用程序:

TinyTds::Error: Server name not found in configuration files

我做了一个研究,但没有找到如何解决这个问题。 我甚至没有找到如何设置数据库的实例名称。 有人能帮我吗 ?

我找到了解决方案:

安装:unixodbc unixodbc-bin unixodbc-dev

  sudo apt-get install unixodbc unixodbc-bin unixodbc-dev

卸载freetds-bin
freetds的-dev的
freetds的常见

sudo apt-get purge freetds-bin freetds-dev freetds-common

下载freetds当前并安装:

tar -xzf freetds-patched.tar.gz
cd freetds-1.00.15/
./configure
make
sudo make install

我通过这个查询发现了我的数据库实例的dinamic端口:

SELECT local_tcp_port
FROM   sys.dm_exec_connections
WHERE  session_id = @@SPID

并更改database.yml配置添加此端口而不是默认1433

development:
  <<: *default
  host: 10.10.10.10
  username: myuser
  password: mypwd
  port: 58891

之后我跑:

rake db:migrate

一切都很好

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM