Tag: postgresql

rails postgres ERROR:类型为double precision的输入语法无效

我正在尝试以下方法: user_calendars.where(“extract(day from time_from) = ? “, next_day) 但我一直得到这个错误: PG::InvalidTextRepresentation: ERROR: invalid input syntax for type double precision: “Saturday” LINE 1: …”user_id” = $1 AND (extract(day from time_from) = ‘Saturday’… 不知道为什么它指出类型double。

你如何访问你的heroku数据库(特别是postgres)?

当我在本地开发时,我只会运行一个 rails c 我可以在控制台发出查询。 但是,如何查询和访问heroku上的postgres数据库?

rails admin列不存在

在rails admin中编辑用户时,我得到的列不存在。 销售和用户之间的关系是用户has_many:销售,销售belongs_to买家和卖家的另一个belongs_to,写出来像 belongs_to :seller, :class_name=>User, :foreign_key=>:seller_id ActionView::Template::Error (PG::Error: ERROR: column sales.user_id does not exist LINE 1: SELECT “sales”.* FROM “sales” WHERE “sales”.”user_id” = 14 ^ : SELECT “sales”.* FROM “sales” WHERE “sales”.”user_id” = 14): 1: = rails_admin_form_for @object, :url => edit_path(@abstract_model, @object.id), :as => @abstract_model.param_key, :html => { :method => “put”, :multipart => true, […]

如何检查一个数字是否在activerecord范围内?

我有一个带范围列的模型 # 如何使用age: 20来获得JobRequirement ? 就像是 JobRequirement.where(age: 20)

奇怪的Heroku浮点精度错误(轨道上的ruby)

最初我模型上的一个坐标字段是使用整数,但当我尝试部署到Heroku时,我被提醒(通过崩溃)我需要它成为一个浮点(因为我的坐标中有小数点)。 所以我在我的本地机器上生成了change_column迁移,将change_column转换为浮动代替。 一切都很顺利。 我尝试再次部署到heroku,首先使用heroku pg:reset然后使用heroku db:setup 。 在db:setup期间,我收到以下错误: PGError: ERROR: precision for type float must be less than 54 bits : CREATE TABLE “landmarks” (“id” serial primary key, “name” character varying(255), “xcoord” float(255), “ycoord” float(255), “created_at” timestamp, “updated_at” timestamp) 所以我生成了另一个change_column迁移,这次使用:precision选项(设置为:precision => 50 ,小于54)。 我再次完成整个部署过程,它给了我同样的错误。 难道我做错了什么? 我在Heroku之前部署了另一个应用程序,之前使用了float而没有任何修改…… 我在我的本地机器上使用SQLite,我认为Heroku使用Postgres? 提前致谢! [编辑:我还应该提一下输出SQL后错误显示我改变了:precision我的coords的:precision值仍然说’浮动(255)’…不知道为什么]

Postgres查询ILIKE和“%#{}%”

我可以向我解释一下“?” 防止SQL注入? Candy.where(“taste ILIKE ?”, “%#{term}%”) 另外,为什么使用“%{term}%”而不是#{term}? 百分比代表什么?

迭代大型外部postgres db,操作行,将输出写入rails postgres db

我有一个postgres DB,大约有200,000,000行和6列。 列具有int,date和string,但没有主键,也没有基于主键的唯一值。 此DB中的记录包含我的一个rails postgres模型所需的原始数据。 我想迭代完整的外部数据库,对其每一行执行计算,然后将输出写入我的rails模型。 我没有问题连接到数据库或通过ActiveRecord访问记录,但我尝试迭代数据库的所有内容都失败或耗时太长。 我尝试过以下方法: ExternalDB.all.each ExternalDB.find_all.each 使用这些说明向ExternalDB添加“id”列 我认为答案是使用SQL进行迭代,但我甚至不确定如何开始。

Postgres查询来计算匹配的字符串

我有以下表格: id description additional_info 123 XYZ XYD 和一个数组: [{It is known to be XYZ},{It is know to be none},{It is know to be XYD}] 我需要以这样的方式映射内容:对于表的每个记录,我能够定义成功匹配的数量。 以上示例的结果将是: id RID Matches 1 123 2 只有位置0和2的内容与记录的description / additional_info Matches因此Matches在结果中为2。 我正在努力将其转换为Postgres中的查询 – 动态SQL以精确地在PL / pgSQL函数中创建VIEW 。

有没有办法将Rails默认时间戳更改为Ymd H:i:s(而不是Ymd H:i:su)或laravel忽略Ymd H的小数部分:i:su?

我有两个使用相同postgres DB的应用程序。 laravel应用程序和rails应用程序。 DB中的当前数据是Ymd H:i:s格式,但每当rails添加记录时,格式为Ymd H:i:su ,其中包括毫秒。 如果created_at日期是laravel中的引用,则会在laravel端导致以下错误: InvalidArgumentException Trailing data … Laravel模型可以改变它们的日期格式,所以我可以包括使它符合Ymd H:i:su然后我需要更新所有记录以在created_at日期(以及任何其他时间戳)中具有毫秒。 不幸的是,当我指定格式为Ymd H:i:s为laravel模型时,它不会忽略小数。 这就是为什么我现在正在寻找默认轨道以Ymd H:i:s格式保存的方法,而不是包括毫秒。 然后Rails和Laravel应用程序将使用相同的格式,并且不会有任何冲突。 我知道我可以进入数据库并将列类型更改为时间戳(0),它会截断小数,但我会更改框架保存的格式,而不是更改数据库将接受的内容。 Ymd H:i:s和Ymd H:i:su都是有效的时间戳…如果我可以让Rails使用Ymd H:i:s格式或让Laravel在查看时间戳时忽略.u以防止尾随数据错误,我会清楚。 有没有办法更改rails将时间戳保存到数据库的默认格式? 是否有办法让Larave Carbon忽略Ymd H:i:su格式中时间戳的小数部分? 谢谢

由于未知OID被视为String,ActiveRecord和SQL不会返回相同结果的情况

我有个问题。 之前我发布了一个类似的问题,我要问的是哪个问题得到解答,可以在这里找到上下文ActiveRecord Count和SQL计数不匹配 这个问题与计算查询结果有关。 在这个问题中,我得到了不同的对象结果,而不是没有得到相同的计数结果。 这是ActiveRecord代码: scope :unverified_with_no_associations, -> { find_by_sql(“SELECT DISTINCT(accounts.id, accounts.email) FROM accounts WHERE level = 0 AND id NOT IN (SELECT DISTINCT(account_id) FROM verifications) AND id NOT IN (SELECT DISTINCT(account_id) FROM positions) AND id NOT IN (SELECT DISTINCT(account_id) FROM edits) AND id NOT IN (SELECT DISTINCT(account_id) FROM posts) AND id NOT IN […]