Akh*_*oes 10 database postgresql postgresql-9.0
我实际上不知道我是怎么做到的:但是我的postgres数据库中有一个无名表.不用说,这样的表是有问题的,它不会被删除,也不会以任何方式改变它.
以下是pgAdmin资源管理器中的外观图:

至于它的声明,它是这样的:
CREATE TABLE
(
_id_ integer NOT NULL DEFAULT nextval('bu_b__id__seq'::regclass),
pt_utilisateur integer,
pt_date date,
lon double precision,
lat double precision,
CONSTRAINT PRIMARY KEY (_id_)
)
Run Code Online (Sandbox Code Playgroud)
所以,一个简单的问题:如何删除这个表(因为尝试删除它来使用它的名称......它不存在!)?
问候.
如果这是不是关于一个表,该表的名字是不是由于编码/字体的问题,你可以做到这一点显示:
当然,这假定您拥有对数据库的超级用户访问权限.
第一步 - 从目录中确定OID:
SELECT oid, relname FROM pg_class WHERE length(relname) <= 1;
Run Code Online (Sandbox Code Playgroud)
如果你没有得到任何结果,那么表有一个名字 - 它只是不可显示.在这种情况下,只需跳过WHERE部分,用眼睛看.
第二步 - 更改系统目录:
UPDATE pg_class SET relname = 'foo' WHERE oid = /*OID from step 1*/;
Run Code Online (Sandbox Code Playgroud)
无论如何 - 不要停在这里,你必须继续.
第三步 - 清理
PostgreSQL将表名存储在多个位置(例如pg_type).有些工具可能依赖于此.要清理它,你必须删除表(因此删除未发表的东西)或者你必须使用官方工具重新命名表.
ALTER TABLE foo RENAME TO /*somthing real*/;
Run Code Online (Sandbox Code Playgroud)
要么
DROP TABLE foo;
Run Code Online (Sandbox Code Playgroud)
通常的警告:你正在咀嚼PostgreSQL的内部 - 不要做愚蠢的事情并自行承担风险:-)
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |