Mysql 迁移错误-错误:SQL语法中有错误;检查相应的手册
无法确定语法sql文件迁移的错误。请帮忙: 我运行rakedb:migrate 错误: Mysql2::Error:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“更新照片集投票数”\u count=0,rating=0,其中id不在()/home/user/myapp/appmame/db/migrate/20131110162613\u重新计算照片\u rating.rb:8:IN“up”Mysql 迁移错误-错误:SQL语法中有错误;检查相应的手册,mysql,ruby-on-rails,mysql2,Mysql,Ruby On Rails,Mysql2,无法确定语法sql文件迁移的错误。请帮忙: 我运行rakedb:migrate 错误: Mysql2::Error:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“更新照片集投票数”\u count=0,rating=0,其中id不在()/home/user/myapp/appmame/db/migrate/20131110162613\u重新计算照片\u rating.rb:8:IN“up” class RecalculatePhotosRating < Ac
class RecalculatePhotosRating < ActiveRecord::Migration
def up
if Vote.where("subject_type='Photo' and rating > 1").count > 0
ActiveRecord::Base.connection.execute "DELETE FROM votes WHERE subject_type='Photo' AND rating <= 5"
ActiveRecord::Base.connection.execute "UPDATE votes SET rating=1 WHERE subject_type='Photo'"
end
pids = Vote.where(subject_type: 'Photo').pluck(:subject_id).uniq
ActiveRecord::Base.connection.execute "UPDATE photos SET votes_count = 0, rating = 0 WHERE id NOT IN (#{pids.join(', ')})"
ActiveRecord::Base.connection.execute "UPDATE photos SET rating=(SELECT COUNT(*) FROM votes WHERE votes.subject_type='Photo' AND subject_id=photos.id) WHERE id IN (#{pids.join(', ')})"
ActiveRecord::Base.connection.execute "UPDATE photos SET votes_count=(SELECT COUNT(*) FROM votes WHERE votes.subject_type='Photo' AND subject_id=photos.id) WHERE id IN (#{pids.join(', ')})"
end
def down
end
end
class RecreactEphotosRating1”)。计数>0
ActiveRecord::Base.connection.execute“从投票中删除主题和评级您必须检查pids
查询是否返回空结果:
class RecalculatePhotosRating < ActiveRecord::Migration
def up
if Vote.where("subject_type='Photo' and rating > 1").count > 0
ActiveRecord::Base.connection.execute "DELETE FROM votes WHERE subject_type='Photo' AND rating <= 5"
ActiveRecord::Base.connection.execute "UPDATE votes SET rating=1 WHERE subject_type='Photo'"
end
pids = Vote.where(subject_type: 'Photo').pluck(:subject_id).uniq
unless pids.empty?
ActiveRecord::Base.connection.execute "UPDATE photos SET votes_count = 0, rating = 0 WHERE id NOT IN (#{pids.join(', ')})"
ActiveRecord::Base.connection.execute "UPDATE photos SET rating=(SELECT COUNT(*) FROM votes WHERE votes.subject_type='Photo' AND subject_id=photos.id) WHERE id IN (#{pids.join(', ')})"
ActiveRecord::Base.connection.execute "UPDATE photos SET votes_count=(SELECT COUNT(*) FROM votes WHERE votes.subject_type='Photo' AND subject_id=photos.id) WHERE id IN (#{pids.join(', ')})"
end
end
def down
end
end
class RecreactEphotosRating1”)。计数>0
ActiveRecord::Base.connection.execute“删除我插入的主题和评级的投票,除非pids.empty?”?同样的错误。