我去叫ActiveRecord::StatementInvalid: PG::NotNullViolation: ERROR。谁能告诉我怎样才能拯救PG::NotNullViolation
begin
x.save
rescue ActiveRecord::StatementInvalid
puts "I get here"
end
但我想挽救确切的错误,我们有办法做到这一点吗?
我有这门课
class APIKey < ActiveRecord::Base
before_create do
self.token = SecureRandom.urlsafe_base64
self.valid_token = true
end
end
当我尝试用APIKey.create!创建一个新记录时,我得到了这个错误
SQL (56.5ms) INSERT INTO "api_keys" ("created_at", "token", "updated_at", "va
列上有一个非空约束。我有一个IntegrationTest测试用例,post是一个没有该列的实例。我的目标是断言返回的响应代码是400.
我的第一次尝试是:
test "should fail if no context" do
post trips_url, params: { trip: { state: @trip.state } }
assert_response 400
end
但是对于Minitest::UnexpectedError: ActiveRecord::NotNullViolation: SQLite3::ConstraintException:
我正在尝试创建一个comment实例。它会返回一个验证错误。
A comment has one moderation并包含reportable。所以您可以执行moderation.reportable,然后它返回comment。
我希望在创建新的moderation时创建comment实例。
class Comment < ApplicationRecord
include Reportable
after_create :create_moderation
def create_moderation
blog = self.bl
当使用sqlalchemy和服务器默认值将字段设置为不可为空时,我正在尝试使用session.merge(object)更新记录。当它试图更新现有记录时,会抛出一个错误,表明违反了not null约束。我可以通过从表初始化中的记录中删除null值来解决这个问题,但这似乎很奇怪。这是意料之中的,还是我不了解服务器默认设置或session.merge的工作原理?
Python版本: 3.6.8
sqlalchemy版本: 1.3.4
示例代码:
import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_ba
为什么created_at为null,我将如何解决这个问题?
↳ app/controllers/projects_controller.rb:28:in `create'
Tag Upsert (5.6ms) INSERT INTO "tags" ("category","name") VALUES ('topic', 'career') ON CONFLICT ("id") DO UPDATE SET "type"=excluded."type",
在升级到Rails5.2并运行rake :migrate后,我得到以下错误 ActiveRecord::NotNullViolation: Mysql2::Error: Field 'key' doesn't have a default value: INSERT INTO 'ar_internal_metadata' 我知道这是Rails5和更高版本中的一个新功能,可以防止生产中潜在的数据丢失。我在模式或迁移中找不到生成此表的任何位置。它创建的键列没有默认值,并且不能更改,因为它是主键。任何帮助都将不胜感激。
在商店模式中:
class Shop < ActiveRecord::Base
alias_attribute :token, :basic_token
# basic_token column is set NOT to be NULL in DB
end
在商店工厂:
FactoryGirl.define do
factory :shop do
basic_token '12313123123123123123123'
...
...
end
end
在RSPEC商店主计长:
require 'rails_helper&