mysql - Ruby Mysql2 客户端在插入时不带反斜杠

标签 mysql ruby-on-rails ruby ruby-on-rails-4 mysql2

我们在应用程序中使用生产和临时数据库。 我们的要求是,当生产数据库中添加一条记录时,将所有记录插入临时数据库,以便两个服务器的数据一致且相同。

我已使用 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/

相关文章:

php - 根据php的返回值提交jquery表单

ruby-on-rails - Rails cron 与无论何时

ruby-on-rails - 为什么设计邀请不发送一些电子邮件

ruby-on-rails - Rails 控制台 - 重新加载!模块中的第三方服务

ruby-on-rails - 通过关联在 has_many 上出现未初始化的常量错误

ruby - 如何检查关联属性的非零值 - 有没有更简洁的方法?

java - 在 Flink : No suitable driver found when connecting to mysql >= 8. 0.16 中使用 mysql-connector-java

mysql - SQL更新两个表事务语法

mysql - 合并相应的MySQL记录

ruby-on-rails - rails : uninitialized constant error on Active Record destroy