跑步:
Price.find(208999).delete
在rails控制台中,将导致错误消息:
SQL (0.0ms) DELETE FROM "prices" WHERE "prices"."id" = $1 [["id", 208999]]
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get
socket descriptor: DELETE FROM "prices" WHERE "prices"."id" = $1'
随后对同一命令进行重试会导致:
SQL (4.0ms) DELETE FROM "prices" WHERE "prices"."id" = $1 [["id", 208999]]
ActiveRecord::StatementInvalid: PG::ConnectionBad: PQconsumeInput() server
closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
: DELETE FROM "prices" WHERE "prices"."id" = $1
此时,我的I无法在没有遇到此问题的情况下运行任何查询命令。在运行delete之前,可以在另一个表上删除另一个SQL。
我尝试过堆栈溢出中与此错误相关的所有其他链接:
我没有任何规范/rspec rake任务设置,但是我尝试了rails tmp:清除哪个状态,"#清除缓存和套接字文件从.“
我已经检查过是否有任何关联到这个记录到另一个表,但是我的搜索没有返回任何东西。
发布于 2020-03-22 15:50:01
经过几个小时的搜索..。
问题是,在我的price.rb模型文件中,我声明了以下关系:
class Price < ApplicationRecord
belongs_to :card
has_and_belongs_to_many :collections
has_many :types
class << self # Class methods
end
end
我删除了price.types关联记录,但是我没有这样做,并且删除了card.prices关联记录。
所以我运行的命令是:
price = Price.find(208999)
card = price.card
#delete price_card association record
card.prices.delete(price)
#now i'll be able to delete the price record
price.delete
确实需要有一个更好的错误消息,因为我一直在修改我的database.yml文件并重新设置我的套接字,因为这就是错误消息导致您相信的。
希望这将有助于其他人在处理数据库配置方面的混乱。
编辑2
刚刚再次出现了这个问题,我更新到了PostgreSQL的最新版本,即12.4,当我阅读dba stackexchange answer时,这是在PostgreSQL 11中发出DELETE sql命令时常见的问题,这是我正在运行的。
但这并没有解决问题。
在下载并仔细查看了pgAdmin4生成的日志文件之后,我发现了对关系键的引用,因此我创建了一个小脚本来循环遍历所有记录,并将任何赋值键值设置为nil
,因此在删除时不会抛出任何讨厌的错误。
Product.all.each do |product|
product.update(cardset_id:nil,language_id:nil)
product.delete
end
编辑3
所以我终于找到了我的PostgreSQL数据库疯狂的真正原因。
我有一个名为“纸牌”的表,它有一个弹格字段,其中有unique: true
选项集。
在我的卡片模型中,我有一个函数
extend FriendlyId
friendly_id (:slug_id), use: :slugged
def slug_id
[
[:name, :cardset_id],
]
end
通过名称和cardset_id的混合创建了一个弹状体,但是如果我想要相同记录的不同副本,它是出于某种原因创建相同的弹状体id。
当PostgreSQL去获取这个记录时,它会中断,因为数据没有意义,而且它一开始就不应该存在。
所以我的鼻涕虫功能不像预期的那样有问题。
在删除每个记录之前,我只需将段塞设置为一个随机值,然后删除它。
https://stackoverflow.com/questions/60801298
复制相似问题