Tag: postgresql

postgresql datababse出错:服务器是否在本地运行并接受Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?

当我运行rake db:migrate或运行rails s命令时,我得到同样的错误: Error : could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”? 当我尝试使用rails s时,我在浏览器中收到错误。 这是我的database.yml default: &default adapter: postgresql encoding: unicode pool: 5 development: <<: *default database: books_development test: <<: *default database: books_test production: <<: *default database: books_production username: […]

Ruby中DateTime的毫秒分辨率

我有一个像2012-01-01T01:02:03.456这样的字符串,我使用ActiveRecord存储在Postgres数据库TIMESTAMP中。 不幸的是,Ruby似乎砍掉了毫秒: ruby-1.9.3-rc1 :078 > ‘2012-12-31T01:01:01.232323+3’.to_datetime => Mon, 31 Dec 2012 01:01:01 +0300 Postgrs支持微秒级分辨率。 如何才能相应地保存我的时间戳? 我需要至少毫秒的分辨率。 (PS是的,我可以在postgres中以毫秒整数列进行破解;这种方式会破坏ActiveRecord的整个目的。) 更新: 非常有用的响应表明,Ruby的DateTime并没有缩短毫秒数; 使用#to_f显示它。 但是,做: m.happened_at = ‘2012-01-01T00:00:00.32323’.to_datetime m.save! m.reload m.happened_at.to_f 是否丢弃毫秒。 现在,有趣的是,在Rails和Postgres中, created_at确实显示毫秒。 但其他时间戳字段(如上面的happen_at)则没有。 (也许Rails对created_at使用NOW()函数而不是传入DateTime)。 这导致了我的终极问题: 如何让ActiveRecord在时间戳字段上保留毫秒分辨率?

如何在Rails 4中清理原始SQL

在Rails 3中,我可以使用sanitize_sql_array来清理那些需要原始SQL查询的偶然时刻的原始SQL。 但是这似乎已经在Rails 4中删除了,或者没有那么多删除,而是转移到ActiveRecord :: Sanitization。 但是,我现在无法弄清楚如何调用sanitize_sql_array ,那么在Rails 4中清理原始SQL的最佳方法是什么? 我想澄清一下,我在这里讨论完整的原始SQL查询,而不是使用Rail的模型。 我知道这不是最佳实践,这正是我必须为这个特定查询做的事情,因为它不能用Rails的好的ActiveRecord接口来表示(相信我,我已经尝试过了)。 这是一个示例调用,它明显比我的查询实际上看起来更简单: query = “SELECT * FROM users LEFT OUTER JOIN posts ON users.id=posts.user_id AND posts.topic_id = ‘#{topic.id}'” # ^- Obviously bad and very vulnerable, this is what we’re trying to fix ActiveRecord::Base.connection.select_all(query)

安装pg -v 0.17.1

我正在使用/我想使用Postgresql作为数据库,但是当我输入“bundle install”或“bundle update”时,我收到此错误,我该怎么做才能解决这个问题? 🙂 Installing pg (0.17.1) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb checking for pg_config… no No pg_config… trying anyway. If building fails, please try again with –with-pg-config=/path/to/pg_config checking for libpq-fe.h… no Can’t find the ‘libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to […]

特拉维斯CI:致命:角色不存在

我试图让我的应用程序与Travis CI一起工作,但我一直在努力: FATAL: role “skateparks” does not exist 。 关于我可能做错的任何想法? 我跟着他们的文件 。

Rails 4 session.id偶尔为零

我在Heroku上运行一个简单的网站,当我运行应用程序时,我注意到一些奇怪的事情。 当我的用户登录数据库时,大约有50-60%的用户报告了一个nil session_id。 我正在使用active_record_store作为我的会话处理程序,使用Postgres作为我的数据库服务器。 我使用cookie_store得到了类似的结果,所以我不确定我做错了什么。 我唯一的猜测是用户发出的第一个请求,可能还没有填充id。 会话表具有正确的条目数,但我的跟踪表没有。 示例代码 class CaptionController < ApplicationController def index @image = Image.order("RANDOM()").first Tracking.log(session.id, Tracking::VIEW_CAPTION_ON_IMAGE, @image.id) end 上面的代码占50%的时间,会话在其记录的表中为零。

Ruby’pg’gem连接到libpq.5.dylib的错误副本(在OSX上)

PostgreSQL 9.3的EnterpriseDB安装程序将其文件放在Mac OSX上的/Library/PostgreSQL/9.3/* 。 但是,Ruby libpq.5.dylib ‘从/usr/lib加载旧版本的’C’动态库libpq.5.dylib ,而不是使用/Library/PostgreSQL/9.3/lib的正确版本。 尽管我已安装了gem,但仍会发生这种情况 gem install pg — –with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config 在确定’pg’gem之前,我通过设置DYLD_PRINT_LIBRARIES环境变量来确定加载了哪个版本的libpq.5.dylib 。 链接到错误的动态库的最明显后果是gem无法使用域套接字连接到数据库,因为套接字在/var/pgsql_socket到/tmp之间的版本之间重定位。 但是,链接到旧库也可能导致其他问题。 有关如何解决此问题的任何建议? (我正在运行Mac OSX Lion。附加说明:对于大多数pg库,EnterpriseDB安装程序在/Library/PostgreSQL/9.3/lib都放置了静态(.a)和动态(.dylib)版本,但对于libpq.5只安装了动态版本。)

RoR:不能在postgres中更改_column,在MySQL中可以很好(MySQL用于开发,Postgres在Heroku上)

我有一个名为“奖品”的专栏: create_table :contests do |t| t.text :prize 我最近意识到这将永远是一个整数,我想设置一个默认值: def change change_column :contests, :prize, :integer, :default => 200 这在我使用MySQL DB的本地机器上工作正常。 但是,当我推送到我的生产站点(在Heroku上托管,它给我一个Postgres DB)时,我收到以下错误: PGError: ERROR: column “prize” cannot be cast to type “pg_catalog.int4” : ALTER TABLE “contests” ALTER COLUMN “prize” TYPE integer 在本文中: http : //www.postgresonline.com/periodical.php?i_id = 3他们讨论了使用USING来解决这个问题。 但我不知道如何做到这一点,以及这是否适合我正在尝试做的事情。 任何深入了解这一点的人都会非常感激。 谢谢! 林戈

存储星期几和时间?

我有一个关于在数据库中存储星期和时间的两部分问题。 我正在使用Rails 4.0,Ruby 2.0.0和Postgres。 我有某些事件,这些事件都有一个时间表。 例如,对于“Skydiving”活动,我可能有周二,周三和下午3点。 我有办法将星期二和星期三的记录存储在一行中,还是应该有两条记录? 存储日期和时间的最佳方式是什么? 有没有办法存储星期和时间(不是日期时间)或者这些应该是单独的列? 如果它们应该分开,我将如何存储一周中的哪一天? 我想将它们存储为整数值,0表示星期日,1表示星期一,因为这就是Time类的wday方法。 任何建议都会非常有用。

带有PostgreSQL的Rails 3.1:GROUP BY必须在聚合函数中使用

我正在尝试加载由user_id分组并由created_at排序的最新10种艺术。 这适用于SqlLite和MySQL,但在我的新PostgreSQL数据库上出错。 Art.all(:order => “created_at desc”, :limit => 10, :group => “user_id”) ActiveRecord错误: Art Load (18.4ms) SELECT “arts”.* FROM “arts” GROUP BY user_id ORDER BY created_at desc LIMIT 10 ActiveRecord::StatementInvalid: PGError: ERROR: column “arts.id” must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT “arts”.* FROM “arts” GROUP […]