在谷歌上搜索了几个小时,尝试了这个和那个,我想知道这里是否有人对如何克服这个错误有任何建议。
首先,我正在处理一个非常旧的MySQL v3.23.58 DB/服务器,此时我无法升级。从这个数据库的迁移是在工作中,但我有需要通过一个Rails UI访问它的时刻。所以我得到下面的错误似乎是一个不兼容的初始连接字符串发送设置一些会话变量,是吗?我可以使用*nix命令行mysql-client连接到远程DD/Server并执行查询。我试过通过连接定义改变init值,没有成功。我正在考虑将数据从远程服务器发送到本地rails DB并远程查询本地DB的替代选项。但是,在这个关键时刻,我更喜欢直接读/写远程DB。任何帮助将不胜感激!
谢谢
td@noc:~/rails_workspace/SC$ rails c
Loading development environment (Rails 4.2.1)
2.2.1 :001 > ServerBan
=> ServerBan (call 'ServerBan.connection' to establish a connection)
2.2.1 :002 > b = ServerBan.first()
Mysql::Error: You have an error in your SQL syntax near 'NAMES latin1, @@SESSION.sql_mode = '', @@SESSION.strict = 0, @@SESSION.sql_auto' at line 1
/config/形式。
server1:
adapter: mysql2
encoding: utf8
pool: 5
host: <ip>
port: 3306
username: <user>
password: <passwd>
database: monitor
strict: false
variables:
sql_mode: ''
。/app/模型/serverban.rb
class ServerBan < ActiveRecord::Base
establish_connection :server1
self.table_name='rules'
end
按如下方法修改./config/database.yml
文件:
server1:
adapter: mysql2
encoding: utf8
pool: 5
host: <ip>
port: 3306
username: <user>
password: <passwd>
database: monitor
strict: false
variables:
sql_mode: ''
只有sql_mode
应该在变量部分下面。strict
将是主要参数的一部分。
请参阅http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/MysqlAdapter.html获取对这些参数的解释,包括variables
参数。