关于我之前问过的一个问题,我正在跟进,我试图寻求从一个愚蠢/写得不好的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
要在表上具有整数自动编号主键,可以使用 SERIAL
但是我注意到该表information_schema.columns具有许多identity_字段,实际上,您可以创建一个带有GENERATED说明符的列 ...
有什么不同?他们引入了不同的PostgreSQL版本吗?是一个比另一个更好的选择吗?
我想将我自己的值插入到身份列中。
表架构:
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)
如果您有任何解决方案,请告诉我。
尝试插入新房间时,我开始收到以下错误消息
** (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) 我和这篇文章有同样的问题。但我正在使用 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 的行已经存在。
谢谢。
我有一个在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保存用户?
postgresql ×6
django ×2
activerecord ×1
database ×1
duplicates ×1
ecto ×1
postgrex ×1
python ×1