相关疑难解决方法(0)

IntegrityError重复键值违反唯一约束 - django/postgres

关于我之前问过的一个问题,我正在跟进,我试图寻求从一个愚蠢/写得不好的mysql查询到postgresql的转换.我相信我成功了.无论如何,我正在使用手动从mysql数据库移动到postgres数据库的数据.我正在使用看起来像这样的查询:

  """
  UPDATE krypdos_coderound cru

  set is_correct = case 
      when t.kv_values1 = t.kv_values2 then True 
      else False 
      end

  from 

  (select cr.id, 
    array_agg(
    case when kv1.code_round_id = cr.id 
    then kv1.option_id 
    else null end 
    ) as kv_values1,

    array_agg(
    case when kv2.code_round_id = cr_m.id 
    then kv2.option_id 
    else null end 
    ) as kv_values2

    from krypdos_coderound cr
     join krypdos_value kv1 on kv1.code_round_id = cr.id
     join krypdos_coderound cr_m 
       on cr_m.object_id=cr.object_id 
       and cr_m.content_type_id =cr.content_type_id 
     join krypdos_value kv2 on kv2.code_round_id = cr_m.id

   WHERE
     cr.is_master= …
Run Code Online (Sandbox Code Playgroud)

django postgresql database-integrity duplicates unique-constraint

55
推荐指数
6
解决办法
4万
查看次数

PostgreSQL:串行与身份

要在表上具有整数自动编号主键,可以使用 SERIAL

但是我注意到该表information_schema.columns具有许多identity_字段,实际上,您可以创建一个带有GENERATED说明符的列 ...

有什么不同?他们引入了不同的PostgreSQL版本吗?是一个比另一个更好的选择吗?

postgresql

8
推荐指数
1
解决办法
2508
查看次数

如何在 PostgreSQL 11.1 中向标识列插入值

我想将我自己的值插入到身份列中。

表架构:

CREATE TABLE public.userdetail (
    userdetailid int4 NOT NULL GENERATED ALWAYS AS IDENTITY,
    username varchar(30) NOT NULL,
    "password" varchar(1000) NOT NULL,
    CONSTRAINT pk_userdetail PRIMARY KEY (userdetailid)
);
Run Code Online (Sandbox Code Playgroud)

插入查询:

INSERT INTO UserDetail (UserDetailId,UserName, Password) 
  VALUES(1,'admin', 'password');
Run Code Online (Sandbox Code Playgroud)

这里插入查询抛出以下错误:

无法插入“userdetailid”列

是否有任何命令可以强制插入到身份列,如 MS SQL:

 SET IDENTITY_INSERT UserDetail ON
Run Code Online (Sandbox Code Playgroud)

如果您有任何解决方案,请告诉我。

database postgresql

7
推荐指数
1
解决办法
8733
查看次数

pkey上的Ecto唯一约束错误

尝试插入新房间时,我开始收到以下错误消息

** (Ecto.ConstraintError) constraint error when attempting to insert struct:

    * unique: rooms_pkey

If you would like to convert this constraint into an error, please
call unique_constraint/3 in your changeset and define the proper
constraint name. The changeset defined the following constraints:

    * unique: rooms_name_index
Run Code Online (Sandbox Code Playgroud)

主键不应该自动递增吗?什么会突然发生这个错误?插入是作为multi的一部分完成的,相关部分是:

|> Multi.insert(:room, Room.changeset(%Room{}, %{name: "service-user-care-team:" <> Integer.to_string(user.id)}))
Run Code Online (Sandbox Code Playgroud)

有关其他参考,请参阅我的架构,包括更改集

schema "rooms" do
  field :name, :string
  many_to_many :users, App.User, join_through: "user_rooms", on_delete: :delete_all
  has_many :messages, App.Message

  timestamps()
end

def changeset(struct, params \\ %{}) do
  struct
  |> …
Run Code Online (Sandbox Code Playgroud)

postgresql ecto phoenix-framework postgrex

6
推荐指数
1
解决办法
773
查看次数

Rails + postgres 自动增量未在显式 id 插入时更新

我和这篇文章有同样的问题。但我正在使用 Rails,不知道如何在 activerecord 中执行此解决方法。

我正在使用seeds.rb 插入一些数据:

device_platforms = DevicePlatform.create([{id: 1, name: 'Android'}, {id: 2, name: 'IOS'}, {id: 3, name: 'Windows Phone'}])
Run Code Online (Sandbox Code Playgroud)

当我插入另一个 DevicePlatform 时,出现此异常:

Failure/Error: @device_platform = FactoryGirl.create(:device_platform)
 ActiveRecord::RecordNotUnique:
   PG::UniqueViolation: ERRO:  duplicar valor da chave viola a restrição de unicidade "device_platforms_pkey"                                                                 
   DETAIL:  Chave (id)=(2) já existe.
   : INSERT INTO "device_platforms" ("created_at", "name", "updated_at") VALUES ($1, $2, $3) RETURNING "id"        
Run Code Online (Sandbox Code Playgroud)

该消息是葡萄牙语,表示具有该 ID 的行已经存在。

谢谢。

postgresql activerecord ruby-on-rails

4
推荐指数
1
解决办法
678
查看次数

Python/Django Key已经存在.Postgres的

我有一个在django中构建的项目,它使用postgres数据库.此数据库由CSVs文件填充.因此,当我想插入一个新对象时,我得到错误"duplicated key",因为id = 1的对象已经存在.

代码 :

user = User(name= "Foo")
user.save()
Run Code Online (Sandbox Code Playgroud)

表用户在id上有PK.

Indexes:
    "users_pkey" PRIMARY KEY, btree (id)
Run Code Online (Sandbox Code Playgroud)

如果我在psql中获得表的详细信息,我得到:

Column| Type    |  Modifiers                          
------+-------- +--------------------------------------
id    | integer | not null default nextval('users_id_seq'::regclass)
Run Code Online (Sandbox Code Playgroud)

另外,如果我做用户.创建变量user后的dict,在保存之前,我得到'id':无

如何使用未使用的ID保存用户?

python django postgresql

3
推荐指数
3
解决办法
3140
查看次数