我在使用PostgreSQL 9.3和使用qoutes创建的表时遇到了一个奇怪的问题。例如,如果我使用qoutes创建表:
create table "TEST" ("Col1" bigint);
该表已正确创建,在pgAdminIII的SQL窗格中查看该引号时,可以看到保留了引号。但是,当我查询数据库以查找所有可用表的列表时(使用下面的查询),我看到结果不包含表名的引号。
select table_schema, table_name from information_schema.tables where not table_schema='pg_catalog' and not table_schema='information_schema';
由于该表是用引号创建的,因此我无法直接使用上述查询返回的表名,因为该表名未加引号,并在标题中引发错误。
我可以尝试在所有查询中用引号将表名引起来,但是我不确定它是否始终有效。我正在寻找一种获取结果中带引号的表名列表的方法。
我在列名方面也遇到了同样的问题,但我希望,如果我能找到表名问题的解决方案,那么类似的解决方案也适用于列名。
您有两种选择:-不加引号:然后所有内容将自动为小写且不区分大小写-带引号:从现在开始,所有内容均区分大小写。
我强烈建议不要使用引号,并使PostgreSQL的行为不区分大小写。它使生活变得如此轻松。一旦引用完您就可以在任何地方使用它,因为PostgreSQL将开始变得非常精确。
一些例子:
TEST = test <-- non case sensitive
"Test" <> Test <-- first is precise, second one is turned to lower case
"Test" = "Test" <-- will work
"test" = TEST <-- should work; but you are just lucky.
真正尝试不惜一切代价避免这种骗术。保留7位ascii作为对象名。
我在列名方面也遇到了同样的问题,但我希望如果我能找到一个解决表名问题的方法,那么类似的方法也能适用于列名。
问题内容: 我在尝试使用PostgreSQL和Hibernate时遇到一些问题,更具体地说,是标题中提到的问题。我已经在网上搜索了几个小时,但没有找到适合我的解决方案。 我正在为Web开发人员使用Eclipse Java EE IDE。在Ubuntu 9.10上使用HibernateTools,Hibernate 3,PostgreSQL 8.4.3构建ID:20090920-1017 以下是相关
:“查询执行失败。原因: SQL错误[42P01]:错误:关系”temp_table“存在。 不存在” 我想创建一个临时表来临时存储一些记录。
我的查询不执行 错误:关系“student_id_seq”不存在SQL状态:42P01
由于一些奇怪的原因,hibernate生成的查询不适用于postgres,它告诉它无法找到关系/表,即使在架构中有有效的表?这个答案没有帮助。 例外情况: HQL公司 生成SQL 此查询工作正常: 基于胶片实体注释的映射: 解决方案/黑客: 评论后,问题消失了。
我正在学习postgresql,并用elephantsql制作这个表格: 但当我尝试插入到: 它返回: