我正在使用 strapi 和 postgres。我在 strapi 中创建了两个集合,分别称为“解决方案”和“参考”。
当我运行时\dt
我得到以下输出:
...more tables
public | references | table | postgres
public | references_components | table | postgres
public | references_pages | table | postgres
public | references_pages_components | table | postgres
public | solutions | table | postgres
public | solutions_components | table | postgres
public | solutions_pages | table | postgres
public | solutions_pages_components
现在我想SELECT
在表“解决方案”上运行一个,它的工作原理是:
SELECT * FROM solutions;
但是当我跑步时SELECT * FROM references;
我得到:
ERROR: syntax error at or near "references"
LINE 1: SELECT * FROM references;
我已经检查过是否有锁,但什么也没有。运行后\z references
输出以下结果:
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+------------+-------+---------------------------+-------------------+----------
public | references | table | postgres=arwdDxt/postgres | |
(1 row)
可能出了什么问题?表名为“引用”可能存在问题吗?这个问题发生在我的本地机器上,也发生在我们的暂存服务器上,所以我不认为这是我的本地 postgres 设置的问题。
我还检查了权限
SELECT table_catalog, table_schema, table_name, privilege_type
FROM information_schema.table_privileges WHERE grantee = 'postgres'
给出以下输出(向右滚动):
mytable | public | references | INSERT
mytable | public | references | SELECT
mytable | public | references | UPDATE
mytable | public | references | DELETE
mytable | public | references | TRUNCATE
mytable | public | references | REFERENCES
mytable | public | references | TRIGGER
答案1
问题是该表名为“references”,而 Postgres 显然不喜欢这个名字。将该表命名为“my_references”或“referencess”是可行的。
template1=# CREATE TABLE references (id bigint NOT NULL);
ERROR: syntax error at or near "references"
LINE 1: CREATE TABLE references (id bigint NOT NULL);
这有效:
template1=# CREATE TABLE referencesss (id bigint NOT NULL);
CREATE TABLE