postgresql 中大写的问题

今天遇到一个奇怪的问题(其实是非常基础的问题),记录一下

问题描述:

一个sequence,名字为:SV_INFO_SEQ_id 在PGAdmin中看存在,查询information_schema.sequences视图也存在,名字也完全一样,但是在重置时总提示relation does not exists,重置语句是

select setval(‘SV_INFO_SEQ_id‘,1)

排错过程:

困惑了好久无果,执行 select nextval(‘SV_INFO_SEQ_id‘)也是一样的提示关系不存在。查看建立时SQL才发现问题,建立时使用的是CREATE SEQUENCE "SV_INFO_SEQ_id"……

突然才想到PG是大小写敏感的,默认情况下会把对象名全部转成小写形式存于数据库中。如果要保持大写,或大小写混写,则必须将对象称用双引号引起来,使用时也必须用双引号。再次执行

select setval(‘“SV_INFO_SEQ_id”‘,1) 得到正确的结果。

举个例子:

create sequence "TEST_SEQ"  INCREMENT 1 start 1 minvalue 1 maxvalue 10;

执行后,在数据库中存储的是就是大写的名称,使用时也名称也必须用双引号引起来,比如

SELECT NEXTVAL("TEST_SEQ")

最后结论:

数据库对象尽量全部使用小写名称,不要大写也不要大小混排,开发时做好开发规范,必免出现问题。

时间: 2024-12-20 17:50:17

postgresql 中大写的问题的相关文章

【开发者笔记】利用shp2pgsql将shape文件导入到postgresql中

导入shp文件到postgresql中 1.首先,你需要让shp2pgsql命令可用,百度下载,加入环境变量即可. 下载地址:https://download.osgeo.org/postgis/windows/pg96/ 如图,打开网址,下载目标文件,解压得到如下目录: 将该目录添加到环境变量,然后cmd可运行shp2pgsql即可. 2.命令如下: shp2pgsql -s 3857 -a -W GBK 文件名.shp 命名空间名.表名 | psql -h localhost -U post

PostgreSQL 中定义自己需要的数据类型

PostgreSQL解决某系数据库中的tinyint数据类型问题,创建自己需要的数据类型如下: CREATE DOMAIN tinyint AS smallint CONSTRAINT tinyint_check CHECK (VALUE >= 0 AND VALUE <= 255); ALTER DOMAIN tinyint OWNER TO postgres; COMMENT ON DOMAIN tinyint IS 'tinyint type between 0 and 255'; po

postgresql中to_char和round的混合使用

在postgresql中大家都用过round吧,当遇到小数的时候该如何显示呢?看例子 SELECT to_char(round(127 * 0.1 / 67543,6)*10000,'90.99') 1.88 SELECT to_char(round(127 * 0.1 / 67543,6)*10000,'90.00') 1.88 SELECT to_char(round(150 * 0.1 / 50000,6)*1000,'90.09') 0.30 SELECT to_char(round(1

golang自己定义数据类型查询与插入postgresql中point数据

golang自己定义数据类型查询与插入postgresql中point数据 详细代码例如以下: package main import ( "bytes" "database/sql" "database/sql/driver" "fmt" _ "github.com/lib/pq" "strconv" "strings" ) // 自己定义支持类型 type Poi

在Postgresql中添加新角色(Role)

Postgresql安装完成之后,默认会创建名为postgres的用户.角色(Role)和数据库(Database).而使用你自己原有的用户运行psql时会提示错误. [email protected]:~$ psql psql: FATAL: role "bob" does not exist 如果想要使用自己的用户"bob"来运行psql,就需要在Postgresql中添加名为"bob"的角色(Role). [email protected]

PostgreSQL中initdb做了什么

在使用数据库前,是启动数据库,启动数据库前是initdb(初始化数据库):一起来看一下initdb做了什么吧. 初始化数据库的操作为: ./initdb -D /usr/local/pgsql/data initdb把用户指定的选项转换成对应的参数,通过外部程序调用的方式执行postgres程序.postgres程序在这种方式下将进入bootstrap模式创建数据集簇,并读取后端接口postgres.bki文件来创建模板数据库. /*-------------------------------

如何将扩展名为.backup的文件导入postgresql中 求步骤 新手 谢谢.

1.到www.postgresql.org下载pgadmin这个工具,安装好2.在菜单-文件-新增服务器 名称:TEST-PGSQL(名称自己编) 主机:填上你postgresql数据库的服务器ip地址在本机可以填上:127.0.0.1 埠号:就是端口postgreql默认是 (5432), 用户名:就是创建数据库时指定的超级管理员名称,密码:就是创建数据库时指定的密码.输完后点确定,就会连接到你的数据库.3.找到你要导入数据的数据库名称,点右键,点”恢复“或者”备份回存“(pgadmin不同的

PostgreSQL中几个对象概念及其关系

本文参考:http://blog.csdn.net/kanon_lgt/article/details/5931522 http://blog.csdn.net/kanon_lgt/article/details/6220928 DB实例与schema: 模式是数据库实例的逻辑分割. 数据库是被模式(schema)来切分的,一个数据库至少有一个模式,所有数据库内部的对象(object)是被创建于模式的.用户登录到系统,连接到一个数据库后,是通过该数据库的search_path来寻找schema的

golang自定义数据类型查询与插入postgresql中point数据

golang自定义数据类型查询与插入postgresql中point数据 具体代码如下: package main import ( "bytes" "database/sql" "database/sql/driver" "fmt" _ "github.com/lib/pq" "strconv" "strings" ) // 自定义支持类型 type Point s