嗨,大家好我有一个模型livestream,它有两列数据库'user_id'和'activity_id'。非常直截了当。ruby on rails sql语句错误
现在,当我尝试将多个记录插入到数据库中,我得到一个无效的SQL语句:
SQLite3::SQLException: near ",": syntax error: INSERT INTO livestreams (user_id, activity_id)
VALUES (1, 2), (101, 2)
用来做这个来自insoshi,并作为followes代码:
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是否不支持一次插入多个记录?
我重置了数据库,并重新填充它。
感谢您的帮助,非常感谢。
有一个愉快的一天, 斯特凡诺
我该如何使用SQLite3来完成这样的事情?或者你会推荐使用mysql吗? – KimJongIl 2010-09-11 13:20:43
最好的选择是在单个事务中插入多个记录(适当地更改'do_livestream_insert')。但是如果你不需要SQLite的可移植性,你一定可以切换到MySQL。 – Li0liQ 2010-09-11 19:10:36
SQLite 3.7.11版增加了对多行插入语句的支持。 http://www.sqlite.org/changes.html – yoni 2013-03-27 18:35:33