我需要使用ActiveRecord执行PostgreSQL upsert查询:
sql = "INSERT INTO call_records (created_at, updated_at, number_tag, tag, raw_data)
VALUES (current_timestamp, current_timestamp, 123, 'R', BINARY_VALUE)
ON CONFLICT (number_tag) DO
UPDATE SET tag = 'L' WHERE call_records.tag='L'"
列raw_data
在尝试通过运行以下命令存储二进制值时包含二进制值BINARY_VALUE
:
ActiveRecord::Base.connection.execute(%Q{#{sql}})
它返回以下错误:
ArgumentError: string contains null byte
二进制字符串如下所示:
"\x00\x00\x00\x95\x01\x00\x00\x02"
我该如何储存?我也尝试过:
value = "\x00\x00\x00\x95\x01\x00\x00\x02".unpack('H*')[0]
ActiveRecord::Base.connection.quote("\\x#{value}")
但它不起作用。还有其他办法吗?
答案 0 :(得分:0)
找到问题的答案是
railsraw_bytea
连接中的 active_record
方法。