经过几个小时的谷歌搜索,尝试了这一点,我想知道是否有人在这里有任何关于如何克服这个错误的建议。
首先,我正在处理一个非常老的MySQL v3.23.58 DB / Server,此时我无法升级。从此db迁移正在进行中,但我现在需要通过Rails UI访问它。所以我得到的错误似乎与发送的初始连接字符串不一致,设置了一些会话变量,是吗?我可以使用* nix命令行mysql-client连接到远程DD / Server并执行查询。我已经尝试通过连接定义更改init值,但没有成功。我正在考虑使用其他选项将数据从远程服务器发送到本地rails 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
server1:
adapter: mysql2
encoding: utf8
pool: 5
host: <ip>
port: 3306
username: <user>
password: <passwd>
database: monitor
strict: false
variables:
sql_mode: ''
class ServerBan < ActiveRecord::Base
establish_connection :server1
self.table_name='rules'
end
答案 0 :(得分:0)
修改./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
参数。