ERROR: relation "students" already EXISTS
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 生成了 table:
知道我做错了什么吗?
更新:只是为了澄清我的问题,当我第一次 运行 使用新的 table 名称的代码时,我现在得到错误但是当我再次 运行 它时我得到了以上错误。如何解决?
您不能创建更多同名的 table - 因此如果已经有同名的 table,语句 CREATE
应该会失败。
您可以 运行 之前的声明 DROP TABLE
- 但请注意! - 它会删除 table 及其所有数据,并且 undo 是不可能的。第二种选择是在 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 name ON public.students ("id");
当我执行这个查询时:
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 生成了 table:
知道我做错了什么吗?
更新:只是为了澄清我的问题,当我第一次 运行 使用新的 table 名称的代码时,我现在得到错误但是当我再次 运行 它时我得到了以上错误。如何解决?
您不能创建更多同名的 table - 因此如果已经有同名的 table,语句 CREATE
应该会失败。
您可以 运行 之前的声明 DROP TABLE
- 但请注意! - 它会删除 table 及其所有数据,并且 undo 是不可能的。第二种选择是在 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 name ON public.students ("id");