我们在应用程序中使用生产和临时数据库。 我们的要求是,当生产数据库中添加一条记录时,将所有记录插入临时数据库,以便两个服务器的数据一致且相同。
我已使用 Mysql2 客户端池连接到登台服务器并插入添加到生产中的记录。 这是我的代码:
def create
@aperson = Person.new
@person = @aperson.save
if @person && Rails.env == "production"
#add_new_person_to_staging
client = Mysql2::Client.new(:host => dbconfig[:host], :username => dbconfig[:username], :password => dbconfig[:password], :database => dbconfig[:database])
@person_result = client.query('INSERT INTO user_types(user_name, regex, code) Values ("myname" , "\.myregex\." , "ns" );')
end
end
这里“@person_result
”记录被插入到mysql表中,但“regex
”列消除了“\”斜杠。
例如:user_name = myname,regex = .myregex.,code = ns
当我在 mysql 命令行中手动执行“插入”查询时,它会与\斜杠一起插入。但不是通过“client.query”
为什么\斜线
被消除了。请在这里帮助我。
谢谢。
最佳答案
\可能会被 MySQL2 客户端作为 SQL 注入(inject)保护预处理器的一部分删除。
您是否考虑过尝试使用双反斜杠或使用 escape正确转义字符串的方法?
关于mysql - Ruby Mysql2 客户端在插入时不带反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38742993/