经过几个小时的谷歌搜索,尝试了这个和那个,我想知道这里是否有人对如何克服这个错误有任何建议。
首先,我正在处理一个非常旧的 MySQL v3.23.58 数据库/服务器,此时我无法升级。正在从这个数据库迁移,但我现在需要通过 Rails UI 访问它。所以我在下面得到的错误似乎与发送的初始连接字符串不兼容,设置了一些 session 变量,是吗?我可以使用 *nix 命令行 mysql-client 连接到远程 DD/服务器并执行查询。我已经尝试通过连接定义更改初始值,但没有成功。我正在考虑将数据从远程服务器发送到本地 Rails 数据库并远程查询本地数据库的替代选项。但在这个时刻,我更愿意直接读/写远程数据库。如有任何帮助,我们将不胜感激!
谢谢
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/database.yml
server1:
adapter: mysql2
encoding: utf8
pool: 5
host: <ip>
port: 3306
username: <user>
password: <passwd>
database: monitor
strict: false
variables:
sql_mode: ''
./app/models/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
参数。
关于mysql - Rails 4.2 连接到旧的遗留 Mysql 数据库 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30491483/