小编典典

PostgreSQL:表名/模式混淆

sql

我在Abc我的postgresql数据库的公共架构中创建了一个表。根据文档public应为默认架构。search_path设置"$user",public为预期值。但是以下失败:

select * from Abc

并且此调用也失败:

select * from public.Abc

两者都产生一个错误说relation ... does not exist。但这很好用:

select * from public."Abc"

我是一位经验丰富的T-SQL开发人员,但对Postgresql还是陌生的。根据文档,应该可以在postgresql中使用“普通”
SQL。但这在我的情况下不起作用。任何提示我可能搞砸了吗?


阅读 236

收藏
2021-03-17

共1个答案

小编典典

PostgreSQL默认使用小写字符,同时对列/表名区分大小写:

select * from public.Abc

实际上是:

select * from public.abc

那是因为您的表称为Abc,所以找不到它。

您可以通过引号替换小写形式的行为,因此“ Abc”被视为Abc。

2021-03-17