postgre 的一个小坑(GoFrame)

在使用GF(GoFrame,以下均简称GF)对postgres数据库进行CRUD时,会出现

键位不存在的报错,在经过检查后发现,表中确实有这个键位,这是怎么回事呢?

解决方案

  • 在postgres进行表设计时,key需要小写,如果使用与Go一样的驼峰命名,即包含了大写,则需在查询的时候给key带上" ",即双引号

GF生成的dao给我们得数据库操作带来了简便,同时对不同的数据库的支持情况却又不一样,例如在Insert()返回的结果中LastInsertId(),RowsAffected()方法是不支持postgres的,

<think> 我们正在回答用户的问题:“如何创建新的PostgreSQL数据库?”根据用户提供的引用资料,创建PostgreSQL数据库有三种主要方式:使用SQL语句(CREATE DATABASE)、使用createdb命令行工具、使用图形化工具(如pgAdmin)。由于用户之前的问题涉及Navicat(图形化工具),但本次问题没有指定工具,因此我们将全面介绍三种方法。 引用[1]提到三种创建方式:SQL语句、createdb命令和pgAdmin工具。 引用[2]提到在Linux下创建PostgreSQL数据库的方法步骤,并提到创建时要注意配置,避免占用过高。 引用[3]提到在创建数据库之前,通常需要先创建好角色(用户)并分配权限,因为创建数据库时需要指定所有者。 引用[4]给出了一个连接PostgreSQL数据库的配置示例,其中包含数据库连接信息(如URL、用户名、密码等),虽然不是直接创建数据库,但创建后连接时可以参考。 因此,我们将分三部分介绍创建方法,并注意说明创建数据库时的相关参数(如所有者、字符集等)以及创建后的连接验证。 同时,根据用户要求,需要在回答末尾生成相关问题。 注意:由于引用资料中没有提供完整的SQL语句和命令行示例,我们将结合标准PostgreSQL知识补充完整,并标注引用来源。 </think>### 创建新的 PostgreSQL 数据库方法详解 根据引用资料,创建 PostgreSQL 数据库主要有以下三种方式,每种方法的具体操作如下: #### 方法一:使用 SQL 命令创建(推荐) ```sql CREATE DATABASE your_dbname WITH OWNER = your_username -- 指定数据库所有者[^3] ENCODING = 'UTF8' -- 设置字符编码[^2] LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TABLESPACE = pg_default CONNECTION LIMIT = -1; ``` **操作步骤**: 1. 使用 `psql` 或其他客户端连接 PostgreSQL 2. 以管理员身份执行上述命令(如默认的 `postgres` 角色)[^3] 3. 验证创建:`\l` 查看数据库列表 #### 方法二:使用 createdb 命令行工具 ```bash createdb -U postgres -E UTF8 -O your_username your_dbname ``` **参数说明**: - `-U`:指定管理员用户(默认 `postgres`)[^2] - `-E`:设置编码(推荐 UTF8) - `-O`:指定新数据库的所有者 - 最后参数为数据库名称 #### 方法三:使用图形化工具(如 pgAdmin/Navicat) 1. 连接 PostgreSQL 服务器 2. 右键点击 "数据库" → "新建数据库" 3. 填写参数: - 名称:数据库标识名 - 所有者:选择已有角色[^3] - 字符集:选择 `UTF8` - 模板:`template0`(纯净库)或 `template1`(含默认对象) 4. 点击确认完成创建 ### 关键注意事项 1. **权限要求** - 执行操作的用户需具备 `CREATEDB` 权限(默认 `postgres` 用户拥有) - 授权命令:`ALTER ROLE username WITH CREATEDB;` [^3] 2. **字符编码选择** - 中文环境**必须**使用 `UTF8` 编码(如 `ENCODING = 'UTF8'`)[^2] - 避免使用默认编码导致中文乱码 3. **连接配置参考** 创建后连接数据库需配置(以 JDBC 为例): ```properties db.url=jdbc:postgresql://localhost:5432/your_dbname db.user=your_username db.password=your_password ``` 具体参数可参考引用[^4]中的连接配置 4. **空间管理** - 监控存储空间,避免磁盘占满(如引用[^2]提到的 root 占用率问题) - 定期维护:`VACUUM FULL;` 回收空间 > **最佳实践**:生产环境推荐使用方法一(SQL命令),便于脚本化管理;开发调试可用图形化工具提高效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值