Ruby Ruby 利用 sqlanywhere 连接 MySQL

jpwangluo · 2015年12月14日 · 最后由 jpwangluo 回复于 2015年12月17日 · 2740 次阅读

各位大侠,ruby 如何利用 SQLanywhere 连接 mysql 数据库,那句连接语句该怎么写。试了几遍有好几种错误,其中一种如下: Connection error: Timeout occurred while waiting for connection response (DBI::DatabaseError) 这是什么原因

https://github.com/erikh/ruby-dbi 七八年前的东西了,瞅瞅里面的 readme 呗,看看有没有帮助

require 'dbi'
dbh = DBI.connect('DBI:Mysql:test', 'testuser', 'testpwd')

#1 楼 @king1990_cool 用 Mysql 和 Mysql2 都能连接 mysql,现在打算用 sqlanywhere 连接 sybase,问题是用 sqlanywhere,mysql 也连接不了,总出现问题:Database server not found (DBI::DatabaseError)。以下连接语句都不行: dbh=DBI.connect('DBI:SQLAnywhere:db_oa:localhost','root', 'root') dbh=DBI.connect("DBI:SQLAnywhere:Host=192.168.142.128:3306;DatabaseName=db_oa",'root','root') dbh = DBI.connect("DBI:SQLAnywhere:db_oa:localhost","root","root") dbh = DBI.connect("DBI:SQLAnywhere:mydatabase:192.168.100.120","sa","560128") dbh=DBI.connect("DBI:SQLAnywhere:Host=192.168.100.120:5000;DatabaseName=mydatabase",'sa','560128')

#2 楼 @jpwangluo https://github.com/erikh/ruby-dbi/blob/master/lib/dbd/mysql/driver.rb#LC30 通过里面的函数看看他怎么解析的 找到他的解析函数 https://github.com/erikh/ruby-dbi/blob/master/lib/dbi/utils.rb#LC25

dbh=DBI.connect("DBI:Mysql:host=192.168.100.120;database=mydatabase;port=3306",'sa','560128')

试试这样写看看能不能连接上。

#3 楼 @king1990_cool 不行,提示" Database server not found (DBI::DatabaseError)"错误,还有别的什么方法能连接 sybase 吗?

@jpwangluo 上面那位仁兄使用了dbi-mysql的 gem 包,如果不是必须,不要用SQLAnywhere了,用的人估计不多,遇到问题时会比较痛苦 😪

#5 楼 @rubyist518 还有什么别的方法能连 sybase ASE/IQ吗?

@jpwangluo 没用过sybase,这方面没有好的建议,有人使用 FreeTDS + TinyTDS + Sequel 连接。 原文:http://aikuapp.com/questions/1971143/sybase-from-ruby-jdbc-connection-to-sybase 仅供参考。

#4 楼 @jpwangluo 我很好奇,你说的 sqlanywhere,看你的错误类型是 dbd-sqlanywhere 这个 gem 么?这个 gem 有对 dbi 的依赖 在https://github.com/erikh/ruby-dbi/tree/master/lib/dbd 上面没有对 sybase 的支持。 找到个资料,看看对你有没有帮助。 http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc01776.1604/doc/html/san1357755004681.html

#8 楼 @king1990_cool 错误就是出自 dbh sqlanywhere,现在打算先用 C 连接 sybase,然后在调用 C,试试行不行,谢谢耐心回答

需要 登录 后方可回复, 如果你还没有账号请 注册新账号