问题标签 [rails-postgresql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
923 浏览

ruby-on-rails - Postgres 在 Rails 3 上的复合类型

我发现了一个关于 Postgres 的新东西:复合类型。我真的很喜欢这种方法,它对我非常有用。

问题是 Rails 的 ActiveRecord 没有对此的原生支持。

你曾经在 Rails 中使用过 Postgres 的复合类型吗?是一次很好的体验,还是您更喜欢为这个嵌套数据创建新模型的常用方法?

http://www.postgresql.org/docs/8.4/static/rowtypes.html

谢!:-)

0 投票
1 回答
323 浏览

ruby-on-rails - 从 MySQL 转换为 Postgres 并获得“列“产品”不存在”错误

我在 rails 中使用acts_as_taggable_on 并且试图获取所有尚未标记的产品的列表。在 MySQL 中,以下查询有效:

但是,在 Postgres 中,我收到“产品”列不存在的错误。

生成的 SQL 似乎是:

关于如何使它工作的任何建议?我更喜欢使用主动记录友好的方式,以便它仍然可以在 MySQL 中工作。但这是我愿意牺牲的。

提前致谢..

0 投票
1 回答
2394 浏览

ruby-on-rails - PostgreSQL + Rails 连接故障排除

在过去三年左右的时间里,我经常使用这个网站......这是我的第一篇文章:D

但是,无用的玩笑已经够了,继续手头的事情。


我将从方法/问题、错误开始,然后是错误的跟踪/日志。

然后我会回顾一下到目前为止我为解决这个问题所做的工作,我注意到的一些奇怪的事情,以及我认为可能导致它的原因。


方法/问题:

我最近加入了一个移动应用程序的后端开发团队,在我实现任何新功能之前,我必须让产品在我的本地机器上启动并运行......

(在 app 目录中) rails s

=> 启动 WEBrick

=> Rails 3.1.0.rc4 应用程序开始在http://0.0.0.0:3000开发

=> 使用 -d 调用以分离 => Ctrl-C 以关闭服务器

[2011-09-14 19:11:59] INFO WEBrick 1.3.1

[2011-09-14 19:11:59] INFO ruby​​ 1.8.7 (2009-06-12) [universal-darwin10.0]

[2011-09-14 19:11:59] 信息 WEBrick::HTTPServer#start: pid=35031 端口=3000

所以现在所有这些看起来都很好,但是当我尝试在浏览器上访问页面时......


错误:

(浏览器页面标题):动作控制器:异常捕获

PG错误

fe_sendauth:未提供密码


跟踪/日志

(接第一节终端的最后一行)

缓存错误:没有可用的服务器

/Library/Ruby/Gems/1.8/gems/dalli-1.0.5/lib/dalli/ring.rb:45:in `server_for_key'

/Library/Ruby/Gems/1.8/gems/dalli-1.0.5/lib/dalli/client.rb:239:in `执行'

/Library/Ruby/Gems/1.8/gems/dalli-1.0.5/lib/dalli/client.rb:60:in `get'

/Library/Ruby/Gems/1.8/gems/rack-cache-1.0.3/lib/rack/cache/metastore.rb:320:in `read'

/Library/Ruby/Gems/1.8/gems/rack-cache-1.0.3/lib/rack/cache/metastore.rb:30:in `lookup'

/Library/Ruby/Gems/1.8/gems/rack-cache-1.0.3/lib/rack/cache/context.rb:165:in `lookup'

/Library/Ruby/Gems/1.8/gems/rack-cache-1.0.3/lib/rack/cache/context.rb:65:in `call!'

/Library/Ruby/Gems/1.8/gems/rack-cache-1.0.3/lib/rack/cache/context.rb:50:in `call'

/Library/Ruby/Gems/1.8/gems/rack-1.3.2/lib/rack/deflater.rb:13:in `call'

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/rack/content_length.rb:16:in `call'

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/rack/log_tailer.rb:14:in `call'

/Library/Ruby/Gems/1.8/gems/rack-1.3.2/lib/rack/handler/webrick.rb:59:in `服务'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'

/Library/Ruby/Gems/1.8/gems/rack-1.3.2/lib/rack/handler/webrick.rb:13:in `run'

/Library/Ruby/Gems/1.8/gems/rack-1.3.2/lib/rack/server.rb:265:in `start'

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/commands/server.rb:70:in `start'

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/commands.rb:54

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/commands.rb:49:in `tap'

/Library/Ruby/Gems/1.8/gems/railties-3.1.0.rc4/lib/rails/commands.rb:49

脚本/rails:6:in `require'

脚本/导轨:6

缓存:[GET /] 传递

Dalli::Server#connect localhost:11211

本地主机:11211 失败(计数:0)

我也可以从浏览器中给出完整的跟踪信息,但我不希望这篇文章变得太罗嗦。

所以这就是两难境地!


我做了什么:

简单的解决方案(如下所列)没有任何区别。

正确安装了 pg gem(手动包含路径后)

我修复了 pg_hba.conf 文件以允许信任(ed)连接。

我可以通过 pgadmin3 工具和终端连接到 postgres 数据库。


啊?:

在不同的端口上运行服务器没有任何区别,但如果我尝试连接到为我的 postgresql 数据库保留的端口之一,则连接很忙(如果需要,我也可以发布该错误日志)。

如果我尝试从应用程序访问不存在的页面...例如 users/explode 或 signin/signout,则错误是相同的。不过,终端日志每次都会显示“[GET /'var'] pass”。


想法:

我最好的猜测是问题出在仍然需要密码的连接上,因为“ [GET /'var'] pass ”末尾有一个密码

或者

pg db 正在另一台服务器上运行,并且该应用程序不喜欢我尝试在本地计算机上运行它。

我希望你的猜测比我的好。


如果你设法通过这篇文章做到了,赞。非常感谢。如果你设法想出一个解决方案,不知何故,我将永远亲切。

问候,

~Ryan Johnson(RyeGuyHead)

0 投票
2 回答
1461 浏览

ruby-on-rails - Heroku - PostgreSQL 的 Rails 3 到 3.1 迁移问题:关系“用户”不存在

我一直在关注有关如何从 Rails 3 迁移到 3.1 并使其在 Heroku 上运行的文档。我使用了这里给出的手动升级技术:http ://webtempest.com/upgrade-rails-3-to-3-1/

我已经取得了一些缓慢的进展,但是让它与 Heroku 一起工作一直很痛苦。我的应用程序目前在本地使用 rails 3.1 运行良好。我可能应该让你知道,在开发模式下,我使用的是 mysql(仅仅是因为可以选择使用 sequel pro,而且我还没有完全弄清楚如何在本地使用 postgres)。问题是,我在 rails 3.0 中将我的应用程序推送到 heroku 并在 postgres 和本地使用 mysql 时都没有问题。它一直运行良好。但是,既然我已经使用 heroku cedar 堆栈迁移到 3.1,我在关注 heroku 文档时遇到了以下问题:http: //devcenter.heroku.com/articles/rails31_heroku_cedar

以下是我在将代码推送到 heroku 之后尝试迁移或重置应用程序的数据库以及重新启动应用程序时遇到的错误。

关于如何克服这个问题的任何想法?我正在为这里提到的“用户”使用设计插件。我对这个问题的研究让我早些时候相信我的迁移可能没有正确创建用户表,但是我的第一个迁移文件确实创建了用户表

当尝试在heroku上重新启动应用程序时,这是我在日志中看到的

任何帮助、建议或提示将不胜感激。

0 投票
4 回答
7584 浏览

ruby-on-rails - 如何将序列添加到迁移并在模型中使用它们?

我想要一个Customer带有普通主键和另一列来存储自定义“客户编号”的“”模型。此外,我希望数据库处理默认客户编号。我认为,定义一个序列是最好的方法。我使用 PostgreSQL。看看我的迁移:

如果您知道添加序列的更好的“类似rails”的方法,让我知道会很棒。

现在,如果我做类似的事情

该字段customer_no未预先填充序列的下一个值(应为 1002)。

你知道整合序列的好方法吗?或者有什么好的插件吗?为所有答案干杯!

0 投票
1 回答
515 浏览

ruby-on-rails - Lion 附带什么版本的 PostgreSQL?

我刚刚阅读了“Mac OSX Lion 包括 Postgresql”(升级到 OSX 10.7 Lion 后修复 Postgresql)。

假设我买了一台运行 Lion 的全新 MacBook Pro,默认会安装什么版本的 PostgreSQL?如果我正在为将要进入 Heroku 的应用程序进行 Rails 开发工作,这是否意味着我不需要费心通过自制软件或二进制安装程序安装 PostgreSQL?

0 投票
3 回答
556 浏览

ruby-on-rails-3 - 如何将 Rails 3 中的记录锁定特定时间?

我想要做的基本上是让用户获得对记录的锁定并将其保留一段特定的时间,以便他们可以对其进行更改,例如维基百科。因此,假设一篇维基百科文章给用户一个小时的时间来编辑它,然后其他用户可以编辑它。

我如何使用 Rails 3 实现这一目标?我已经阅读并发现悲观锁定是我应该使用的锁。鉴于此......我会在一个小时后使用什么样的机制来释放锁?

我的堆栈是 Rails 3、Heroku、PostgreSQL。

感谢您提供任何答案,如果可以的话,我很乐意看到代码,那将是非常棒的!

0 投票
3 回答
2687 浏览

ruby-on-rails - Rails - 布尔字段未保存在 PostgreSQL/Heroku 上

遇到一个奇怪的问题:

布尔字段未保存在 Heroku 上(在本地工作正常)

细节:

移民

在 Heroku 上:

当我在本地执行此操作(Postgresql 8.4)时,它按预期工作。

有任何想法吗 ?

编辑:

直接在数据库上运行一些测试:

所以问题出在Rails 而不是Postgresql ......

0 投票
1 回答
8739 浏览

arrays - 在 PostgreSQL 中替换数组中的 NULL 值

选择数组[1,2,3] - 数组[5,NULL,6]

我在 postgresql 8.4 中使用 contrib _int.sql 包进行数组操作 在上面的查询NULL中,右侧有一个数组。由于这个 NULL 值,它会引发错误:

谁能帮我从数组中删除空值?

0 投票
2 回答
3445 浏览

ruby-on-rails - Ruby on Rails+PostgreSQL:自定义序列的使用

假设我有一个名为的模型Transaction,它有一个:transaction_code属性。我希望该属性自动填充一个可能不同于的序列号id(例如 Transaction with id=1could have transaction_code=1000)。

我试图在 postgres 上创建一个序列,然后为该序列的transaction_code列设置默认值nextval。问题是,如果我没有为@transaction.transaction_codeon RoR 分配任何值,当我发出@transaction.saveon RoR 时,它会尝试执行以下 SQL:

INSERT INTO transactions (transaction_code) VALUES (NULL);

这样做是在 Transactions 表上创建一个新行,其中 transaction_code 为 NULL,而不是计算序列的 nextval 并将其插入相应的列。因此,正如我发现的那样,如果您为 postgres 指定 NULL,它假定您确实想将 NULL 插入该列,而不管它是否具有默认值(我来自具有不同行为的 ORACLE)。

我对这方面的任何解决方案持开放态度,无论是在数据库上还是在 RoR 上完成:

  • 要么有办法从 ActiveRecord 中排除属性 save
  • 或者有一种方法可以在使用触发器插入之前更改列的值
  • 或者有一种方法可以在 RoR 中生成这些序列号
  • 或任何其他方式,只要它有效:-)

提前致谢。