ruby on rails sql ошибка оператора - PullRequest
2 голосов
/ 11 сентября 2010

Привет, ребята, у меня есть модель прямой трансляции, которая имеет две колонки в базе данных, 'user_id' и 'activity_id'. Очень прямо вперед.

Теперь, когда я пытаюсь вставить несколько записей в базу данных, я получаю недопустимый оператор SQL:

SQLite3::SQLException: near ",": syntax error: INSERT INTO livestreams (user_id, activity_id) 
          VALUES (1, 2), (101, 2)

Код, используемый для этого, взят из инсоши и выглядит следующим образом:

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

Почему рельсы это делают? Разве SQLlite не поддерживает вставку нескольких записей одновременно?

Я сбросил базу данных и снова заполнил ее.

Спасибо за вашу помощь, высоко ценится.

Хорошего дня, Stefano

Ответы [ 2 ]

2 голосов
/ 11 сентября 2010

SQLite не поддерживал вставку нескольких записей до версии 3.7.11 .

0 голосов
/ 11 сентября 2010

Я бы предложил переопределить do_livestream_insert вместо N вставок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...