簡體   English   中英

錯誤:關系“學生”已經存在

[英]ERROR: relation “students” already EXISTS

當我執行此查詢時:

CREATE TABLE public.students (
  id INTEGER PRIMARY KEY NOT NULL DEFAULT NEXTVAL('students_id_seq'::regclass),
  first_name CHARACTER VARYING(20) NOT NULL,
  last_name CHARACTER VARYING(20) NOT NULL,
  major CHARACTER VARYING(20) NOT NULL
);
CREATE UNIQUE INDEX "Students_ID_uindex" ON students USING BTREE (id);

SELECT * FROM public.students;

我收到以下錯誤:

[2016-03-12 22:16:54] Run postgres.public.students [PostgreSQL - postgres@localhost]
[2016-03-12 22:16:54] Connecting TO PostgreSQL - postgres@localhost...
CREATE TABLE public.students (
  id INTEGER PRIMARY KEY NOT NULL DEFAULT NEXTVAL('students_id_seq'::regclass),
  first_name CHARACTER VARYING(20) NOT NULL,
  last_name CHARACTER VARYING(20) NOT NULL,
  major CHARACTER VARYING(20) NOT NULL
)
[2016-03-12 22:16:54] [42P07] ERROR: relation "students" already EXISTS
CREATE UNIQUE INDEX "Students_ID_uindex" ON students USING BTREE (id)
[2016-03-12 22:16:54] [42P07] ERROR: relation "Students_ID_uindex" already EXISTS
SELECT * FROM public.students
[2016-03-12 22:16:54] Executed IN 14ms ms

[2016-03-12 22:16:54] Summary: 3 OF 3 statements executed, 2 failed IN 68ms (338 symbols IN file)

我已經使用 DataGrip 生成了表格: 在此處輸入圖片說明

知道我做錯了什么嗎?

在此處輸入圖片說明

更新:只是為了澄清我的問題,當我第一次使用新表名運行代碼時,我現在得到錯誤,但是當我再次運行它時,我得到了上述錯誤。 如何解決這個問題?

在此處輸入圖片說明

您不能創建更多同名表 - 因此,如果已經存在同名表,則語句CREATE應該會失敗。

您可以在之前運行語句DROP TABLE - 但請注意! - 它刪除包含所有數據的表,並且無法撤消 第二種選擇是在CREATE語句中使用子句IF NOT EXISTS

DROP TABLE IF EXISTS foo;
CREATE TABLE foo(a int);

或者

CREATE TABLE IF NOT EXISTS foo(a int);  

您不需要使用索引名稱,只需讓 PG 自己制作即可:

CREATE INDEX ON public.students ("id");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM