【发布时间】:2011-04-11 01:41:30
【问题描述】:
大家好,我有一个模型直播,它在数据库中有两列,“user_id”和“activity_id”。非常直接。
现在,当我尝试将多条记录插入数据库时,我得到一条无效的 SQL 语句:
SQLite3::SQLException: near ",": syntax error: INSERT INTO livestreams (user_id, activity_id)
VALUES (1, 2), (101, 2)
代码来自insoshi,代码如下:
def do_livestream_insert(users_ids, activity_id)
sql = %(INSERT INTO livestreams (user_id, activity_id)
VALUES #{values(users_ids, activity_id)})
ActiveRecord::Base.connection.execute(sql)
end
def values(ids, common_value)
common_values = [common_value] * ids.length
convert_to_sql(ids.zip(common_values))
end
def convert_to_sql(array_of_values)
array_of_values.inspect[1...-1].gsub('[', '(').gsub(']', ')')
end
为什么 Rails 会这样做? SQLlite 不支持一次插入多条记录吗?
我已重置数据库并重新填充它。
感谢您的帮助,非常感谢。
祝你有美好的一天, 斯特凡诺
【问题讨论】:
标签: sql ruby-on-rails activerecord sqlite ruby-on-rails-3