Tag: postgresql

Postgress错误捆绑安装

当我跑 $ bundle install 我在heroku上运行项目所以我不得不切换到postgress。 我出于某种原因不断收到此错误。 安装pg(0.15.1)时发生错误,Bundler无法继续。 在捆绑之前确保gem install pg -v ‘0.15.1’成功。 来源’https://rubygems.org’ ruby’2.0.0′ gem’轨道’,’4.0.1′ gem’bootstrap-sass’,’2.3.2.0′ gem’bcrypt-ruby’,’3.1.2′ gem’faker’,’1.1.2′ gem’will_paginate’,’3.0.4′ gem’bootstrap-will_paginate’,’0.0.9′ group:开发,:test do gem’sqlite3’,’1.3.8′ gem’rspec-rails’,’2.13.1′ gem’guard-rspec’,’2.5.0′ gem’spork-rails’,’4.0.0′ gem’guard-spork’,’1.5.0′ gem’childprocess’,’0.3.6′ 结束 组:测试做 gem’selenium-webdriver’,’2.35.1′ gem’capybara’,’2.1.0′ gem’factory_girl_rails’,’4.2.0′ gem’granbow-rails’,’1.3.0’,:require => false gem’database_cleaner’,github:’bmabey / database_cleaner’ gem’咆哮’,’1.0.3′ gem’sass-rails’,’4.0.1′ gem’uglifier’,’2.1.1′ gem’coffee-rails’,’4.0.1′ gem’jquery-rails’,’3.0.4′ gem’turbolinks’,’1.1.1′ gem’jbuilder’,’1.0.2′ group:doc do gem’sdd’,’0.3.20’,要求:false 结束 组:生产做 gem’pg’,’0.15.1′ gem’rails_12factor’,’0.0.2′ 结束

将关联从一个更改为多个到多个到多个

我想有两个模型 class A < ActiveRecord::Base has_many :bs end class B < ActiveRecord::Base belogns_to :a end 现在因为一些系统更改,我需要将这种关联转换为很多很多这样的事情 class A < ActiveRecord::Base has_and_belongs_to_many :bs end class B < ActiveRecord::Base has_and_belongs_to_many :as end 要么 class A < ActiveRecord::Base has_many :cs has_many :bs, through: :cs end class B < ActiveRecord::Base has_many :cs has_many :as, through: :cs end class C […]

根据用户历史自定义交易应用程序的主页和电子邮件:如何在Rails / postgreSQL上以正确的方式执行此操作?

我想定制: 1.主页上的交易顺序 2.电子邮件取决于用户看到的交易。 感谢SO上的人 ,似乎最好的是拥有3个模型和表“standard_user”,“deals”和“deals_participation”,以便拥有应用所需的多对多关系 ,链接表与如下: class DealParticipation < ActiveRecord:Base #This means the deal_participations table has a standard_user_id key belongs_to :standard_user #This means the deal_participations table has a deal_id key belongs_to :deal #… more logic goes here … end class StandardUser :deal_participations # … more logic goes here … end class Deal :deal_participations belongs_to :admin_user […]

Rails 4 postgres bug – 无法创建数据库,因为pg gem“缺失”,但事实并非如此

我使用rails edge(4.0)并在执行时: bundle exec rake db:create 我明白了 Specified ‘postgresql’ for database adapter, but the gem is not loaded. Add `gem ‘pg’` to your Gemfile. 我的Gemfile中有“gem pg”,我已经运行了bundle install … 这可能是什么原因? 谢谢

Rails 3 – mysql返回的结果与postgresql不同

我试图在我的查询中做一些计算,我认为postgresql处理数学的方式与mysql不同,但我不确定区别在哪里。 这是我的控制器的查询: Invoice.find(params[:id], :joins => :invoice_line_items, :select => “invoices.id, SUM(invoice_line_items.hours * invoice_line_items.rate) as subtotal, SUM(invoice_line_items.hours * invoice_line_items.rate) – (SUM(invoice_line_items.hours * invoice_line_items.rate) * (invoices.discount_percentage / 100)) as total”, :group => “invoices.id”) 在我的开发环境中,我使用的是mysql,在我的生产环境中,我使用的是postgresql。 这些是我得到的输出。 作为参考,discount_percentage是20。 MySQL的: | id | subtotal | total | —————————————- | 21 | 570.0000 | 456.00000000 | PostgreSQL的: | id | subtotal | […]

Heroku上的act-as-taggable-on

我一直在我的开发应用程序中使用act-as-taggable-on进行标记,但是当我将它推送到Heroku时,我收到了一个令人讨厌的错误: ActionView::TemplateError (PGError: ERROR: relation “tags” does not exist : SELECT tags.*, taggings.tags_count AS count FROM “tags” JOIN (SELECT taggings.tag_id, COUNT(taggings.tag_id) AS tags_count FROM “taggings” INNER JOIN offers ON offers.id = taggings.taggable_id WHERE (taggings.taggable_type = E’Offer’ AND taggings.context = E’tags’) GROUP BY taggings.tag_id HAVING COUNT(*) > 0 AND COUNT(taggings.tag_id) > 0) AS taggings ON taggings.tag_id […]

Rails – SQL查询返回所有指定相关对象的对象(has_many through)

这是我的第一个问题。 我想构建一个查询,它将为我提供具有所有指定function的所有主题。 我有三个模型主题,function和ThemeFeatures 主题has_many:features,:through =>:theme_feautures 可以说DB中有一个Theme对象(id:1,name:“theme_a”)。 它有(许多)function[(id:1,name:“feature_a”),(id:2,name:“feature_b”),(id:3,name:“feature_c”)] 查询应该像这样工作:Theme.the_query(:features => {:id => [1,2]}),结果是主题,但是当我以这种方式放置ID时Theme.the_query(:features => {:id => [2,4]})结果应为零。 我已经构建了Theme.joins(:features).where(:features => {:id => features_array_ids})但它返回了所有具有features_array_ids元素的主题。 如果features_array_ids = [2,4]它返回主题,但我不希望这样。 对于语法错误我很抱歉,我希望你知道我的意思。 编辑: 找到解决方案 Theme.select(“*”).from(“themes”).joins(“INNER JOIN theme_features ON themes.id = theme_features.id”).where(“EXISTS(SELECT theme_id FROM theme_features tf WHERE tf.feature_id IN (#{features_array_ids.join(“, “)}) AND tf.theme_id = themes.id GROUP BY tf.theme_id HAVING COUNT(*) = #{features_array_ids.count})”)

改变表格时遇到僵局

我在包含大量行的表上的Rails应用程序中运行以下迁移: rake db:migrate *** [] rake aborted! *** [] An error has occurred, this and all later migrations canceled: *** [] *** [] PG::Error: ERROR: deadlock detected *** [] DETAIL: Process 33319 waits for AccessExclusiveLock on relation 18486 of database 16948; blocked by process 29772. *** [] Process 29772 waits for ShareLock on transaction 8652; […]

函数使用Postgres数据库绘制错误,但不在Sqlite上绘制

因此,在将我的代码转移到Postgres中的heroku之后,我的一个函数正在绘制错误。 def index @tutor = Tutor.where(:admin => false) @tutor_array = [] @tutor_array << @tutor.fees_search(params[:fees_search]) if params[:fees_search].present? @tutor_array << @tutor.subject_search(params[:subject_search]) if params[:subject_search].present? @tutor_array << @tutor.lssubject_search(params[:lssubject_search]) if params[:lssubject_search].present? @tutor_array << @tutor.ussubject_search(params[:ussubject_search]) if params[:ussubject_search].present? @tutor_array < params[:page], :per_page => 2) end 突出显示的特定行是这个ids = @tutor.merge(tutor).map(&:id) 我已经读过某些调用适用于sqlite而不是postgres如做LIKE ? 等等。 但我对这里的错误很无能为力。 这是即将出现的错误 TutorController #index中的ActiveRecord :: StatementInvalid PG :: UndefinedFunction:ERROR:运算符不存在:整数=字符变化LINE 1:… M“tutors”INNER […]

如何设置Ruby on Rails 4+应用程序的默认数据库隔离级别

我希望默认情况下让我的应用程序序列化每个事务。 然后,我会根据性能测量结果放松隔离,并了解特定操作/事务使用和更改的数据。 我怀疑默认情况下序列化会进入框架,因为它会减慢速度并且难以解释。 但我不想处理数据库损坏,并且确实需要内部一致的聚合计算。 对于逐个案例的隔离级别,有Rails postgresql如何将事务隔离级别设置为可序列化但我认为这种方法是错误的,因为html-escaping以防止xss错误并被删除:白名单比黑名单更安全。 有没有人这样做过? 哪里可以成为挂钩进入轨道的好地方?