首页 > 解决方案 > 错误:重复键值违反唯一约束

问题描述

我正在尝试将 csv 文件导入下表,但我不断收到此错误:

错误:重复的键值违反了唯一约束“tmdb_5000_movies_production_companies_key” 详细信息:键 (production_companies)=([{iso_3166_1: US, name: United States of America}]) 已经存在。上下文:复制 tmdb_5000_movies,第 5 行

-- 创建新表

CREATE TABLE tmdb_5000_movies (
    "budget" INT,   
    "genres" VARCHAR UNIQUE,
    "homepage" VARCHAR UNIQUE,  
    "id" INT,   
    "keywords" VARCHAR UNIQUE,
    "original_language" VARCHAR,    
    "original_title" VARCHAR,
    "overview" VARCHAR,
    "popularity" DEC,
    "production_companies" VARCHAR UNIQUE,      
    "production_countries" VARCHAR UNIQUE,      
    "release_date" DATE,    
    "revenue" BIGINT,
    "runtime" INT,
    "spoken_languages" VARCHAR UNIQUE,  
    "status" VARCHAR,
    "tagline" VARCHAR,
    "title" VARCHAR,    
    "vote_average" DEC, 
    "vote_count" INT
);

我试图改变数据类型,但我不知道还有什么办法。对此很新,我能得到的任何类型的帮助都将不胜感激!

标签: sqlpostgresql

解决方案


如果列有UNIQUE约束,则不允许两个表行在该列中具有相同的值(除非它是该NULL值)。

删除UNIQUE约束或清理数据。

如果您希望列的组合是唯一的,则必须UNIQUE在多个列上定义约束:

CREATE TABLE t (
   col1 type1,
   col2 type2,
   UNIQUE (col1, col2)
);

此外,每个表都应该有一个主键。


推荐阅读