PostgreSQL
文章平均质量分 51
亮子AI
全干程序员,wx联系:henry334013
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Prisma】如何修复(重建)已经损坏的迁移历史?
当 migrations 历史已经损坏,但是数据库的数据还是完好的,这时简单的方法是删除迁移历史记录,以数据库内容重建迁移历史,也就是以当前数据库的状态重建基线,具体如下。实际情况是,当你应用 migrate 命令时报错,显示迁移历史记录丢失。这种情况发生的原因是:你的数据库中存在一个名为的表,记录了过去所有的迁移历史(那几十个2025xxxx的记录),但你本地的文件夹为空。Prisma 发现数据库记录的迁移在本地找不到,因此认为发生了“漂移(Drift)”。原创 2025-12-22 04:09:19 · 388 阅读 · 0 评论 -
【Prisma】迁移失败怎么处理?
当迁移失败后,提示要重置数据库,那会导致数据丢失。为保证数据不丢失,如何处理呢?下面是一个例子:给字段增加。原创 2025-11-07 10:51:04 · 848 阅读 · 0 评论 -
【NestJS】在 nest.js 项目中,如何使用 Postgresql 来做缓存?
在 NestJS 项目中使用 PostgreSQL 作为缓存存储是一个可行的方案,尽管它通常不如 Redis 等专门的内存缓存系统高效。但是,如果你已经在使用 PostgreSQL 并且希望避免引入额外的服务(如 Redis),或者你的缓存需求量不大、对延迟不那么敏感,那么这确实是一个不错的选择。通过上述步骤,你就可以在 NestJS 项目中成功地使用 PostgreSQL 作为缓存存储了。在你的 PostgreSQL 数据库中创建一个。现在,你可以在你的任何服务或控制器中注入并使用。原创 2025-10-27 16:00:07 · 806 阅读 · 0 评论 -
【NestJS】如何避免 pg-boss 阻塞消息?
默认情况下,原创 2025-10-26 13:34:22 · 812 阅读 · 0 评论 -
【PostgreSQL】什么是 ACID?
首字母缩写,用于表示数据库引擎提供了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。PostgreSQL 完全遵循 ACID 原则,因此保证数据的完整性和一致性具有稳固的基石。意味着一个复杂的数据库操作,即使由多个不同操作组成,也会被视为单个指令来处理。意味着数据库引擎应尽可能保护其包含的数据,即使在软件或硬件故障的情况下。意味着数据库中的数据始终保持一致,不会因部分执行的操作而导致损坏。原创 2025-09-29 02:59:14 · 197 阅读 · 0 评论 -
【PostgreSQL】如何实现主从复制?
如果主库挂了,你需要手动提升从库为主库,并配置其他从库连接到新的主库。这提供了更好的性能,但可能会在主库崩溃时导致少量数据丢失。这个方法是搭建 PostgreSQL 流复制最简单、最快捷的方式,非常适合初次尝试或测试环境。这会删除从库上所有现有的 PostgreSQL 数据。确保主库的 5432 端口对从库开放,反之亦然(如果需要从从库连接到主库)。如果你的从库上已经有 PostgreSQL 服务在运行,请先停止它。已经帮你完成了大部分配置。在主库上插入一些数据,然后在从库上查询,看看数据是否同步过来。原创 2025-09-06 18:15:36 · 923 阅读 · 0 评论 -
【Prisma】怎样让字段增加 1
比如,浏览量增加1。如果分两步:获取字段当前值,加1,再更新表。这种方法也没问题,只是不够优雅。如何优雅的让一个数值字段增加1?原创 2024-07-21 22:16:27 · 414 阅读 · 0 评论 -
【PostgreSQL】Ubuntu 下使用 Prisma 的初始化流程
完成上面准备工作就ok了,不需要手工创建数据库,因为下面将由 Prisma 来创建数据库。整个数据库创建工作就完成了。原创 2024-01-17 23:15:00 · 931 阅读 · 0 评论 -
【PostgreSQL】怎样查看 jsonb 数据?
用通常的 SELECT 语句,jsonb 类型的内容输出在一行,通常内容很长,看不全内容。这时候你可以使用 jsonb_pretty() 函数来打印出内容:> select jsonb_pretty(jsonb_col) FROM mytable;------------------------------------ { + "what": "is this", + "nested": {原创 2021-06-27 10:00:34 · 277 阅读 · 0 评论 -
Node.js 连接 PostgreSQL 的奇怪问题:query 不会返回!
这个问题花了我6个小时!无论是使用回调函数、还是使用 Promise,query 死活没反应。数据库连接正常,新建一个项目来使用数据库也是正常。最后发现是版本问题,升级 pg(node-postgresql)到 8.2.0 版本就解决了!结论:在使用 Node 14 时,要升级 pg 到 8.0 以上!参考:https://github.com/brianc/node-postgres/issues/2069#issuecomment-619456031...原创 2021-02-12 19:03:37 · 516 阅读 · 0 评论 -
PostgreSQL,Ubuntu下安装pgAdmin4
pgAdmin4是PostgreSQL的管理利器,新版 pgAdmin 4 默认是服务器模式,我把它安装在 Ubuntu 18.04 上,下面是安装过程。首先安装公钥 curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add更新源 sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_原创 2020-12-06 11:14:44 · 3996 阅读 · 4 评论 -
优雅实现:如果记录存在,就更新记录,否则插入一条新记录
通常,我们用两条语句来实现这个功能:UPDATE table SET field='C', field2='Z' WHERE id=3;INSERT INTO table (id, field, field2) SELECT 3, 'C', 'Z' WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);可以用下面一条语句实现:INSERT INTO the_table (id, column_1, column_2) VA原创 2020-05-16 05:21:31 · 630 阅读 · 0 评论 -
PostgreSQL 如何写条件:值在数组中、值不在数组中
值在数组中:SELECT COUNT(*) FROM "messages" WHERE 3 = ANY (recipient_ids)值不在数组中SELECT COUNT(*) FROM "messages" WHERE NOT (3 = ANY (recipient_ids))如果你用的是 node.js 的 pg 包,值在数组中可以这样写:var ids = [1,3,4]; ...原创 2020-03-06 20:42:05 · 9179 阅读 · 0 评论 -
PostgreSQL INSERT 如何获得新插入元素的 id?
如果表已经设定 id 为自增变量,插入操作如何获得新插入记录的 id 值?答案是使用 RETURNING 子句:INSERT .... RETURNING id;获取 id:const id = res.rows[0].id...原创 2020-02-29 21:40:33 · 3239 阅读 · 0 评论 -
psql 竖式输出查询结果
psql 默认是水平输出查询结果,一条记录占一行。而且和 mysql 不同的是,它还不换行,如果一行内容太多,后面的就看不见了。如果想切换城竖式显示,只需要使用 \x 命令:# \xExpanded display is on.# \xExpanded display is off.查询结果竖式显示:-[ RECORD 1 ]id | 1bar | Hello-[ RECO...原创 2020-02-28 12:39:09 · 3148 阅读 · 0 评论 -
Postgresql 改变用户密码
修改密码:ALTER USER user_name WITH PASSWORD 'new_password';为了避免在命令历史中泄露了密码,可以使用下面的命令来删除命令历史:rm ~/.psql_history原创 2020-02-27 06:37:06 · 679 阅读 · 0 评论 -
Ubuntu 上如何安装 PostgreSQL?
直接使用 apt 来安装:sudo apt updatesudo apt install postgresql postgresql-contrib安装完成后,使用默认用户 postgres 连接默认数据库 postgres。切换 Linux 用户为 postgressudo -iu postgres登录 psqlpsql这样就打开了 postgres 数据库。从上...原创 2020-01-29 08:51:41 · 284 阅读 · 0 评论 -
Ubuntu 上安装 pgcli
pgcli 是 PostgreSQL 的命令行管理工具,它不但完全兼容 psql 的命令,还增加了很多方便的命令。最大的特点是交互性,它让命令行操作数据库的效率大大提升。记不住命令?记不住字段名称?pgcli都会给你提示。在 Ubuntu 下,使用下面的命令来安装 pgcli:sudo apt updatesudo apt install pgcli福利彩蛋在使用 SELECT 命令时...原创 2020-01-29 08:46:29 · 605 阅读 · 0 评论 -
PostgreSQL 如何删除外键限制?
首先找出数据库表的外键名称:\d [tablename]...."table_name_id_fkey" FOREIGN KEY (id) REFERENCES other_table(id) ....然后使用下面的命令删除外键:ALTER TABLE [tablename] DROP CONSTRAINT table_name_id_fkey;...原创 2020-01-27 12:54:51 · 7716 阅读 · 0 评论 -
如何把 Postgres 的操作结果写入文件?
psql 和 pgcli 提供了将操作结果输入到文件的功能,只需一个命令:\o out.txt这样,所有的操作命令和结果将保存在 ~/out.txt 文件中。如果要想恢复,仍然想再终端上看操作结果,只需执行同样的命令,这次不用带参数:\o...原创 2020-01-26 19:23:59 · 1044 阅读 · 0 评论 -
Postgres 创建自增变量作为 id
代码:CREATE TABLE fruits( id SERIAL PRIMARY KEY, name VARCHAR NOT NULL);数据类型 serial 的取值范围:1 ~ 2,147,483,647https://www.postgresqltutorial.com/postgresql-serial/...原创 2020-01-26 16:59:18 · 492 阅读 · 0 评论 -
Postgresql 换行符写法
三种写法,最后一种最好。第一种:select 'test line 1'||E'\n'||'test line 2';第二种:select 'test line 1'||chr(10)||'test line 2';第三种:select E'test line 1\ntest line 2';...原创 2019-10-20 15:06:54 · 9189 阅读 · 0 评论 -
怎样给 PostgreSQL 的表增加外键?
直接上代码:CREATE TABLE orders ( order_id SERIAL, dish_name TEXT, customer_id INTEGER REFERENCES customers (id));https://tableplus.io/blog/2018/08/postgresql-how-to-add-a-foreign-key.html...原创 2019-08-10 22:15:30 · 7689 阅读 · 0 评论 -
Node.js pg-promise模块出现警告:Creating a duplicate database object for the same connection。怎样在模块中定义数据库连接?
nodejs 的模块 pg-promise 让我们方便使用 PostgreSQL。但是,就算在不同的模块中定义数据库连接,仍然会出现警告信息:WARNING: Creating a duplicate database object for the same connection.正确的做法是,在一个单独的模块中定义数据库连接,其他模块导入使用这个连接。数据库模块的写法:const i...原创 2019-02-25 20:36:14 · 539 阅读 · 0 评论 -
PostgreSQL 操作
登陆两步:sudo -i -u postgrespsql一步:sudo -u postgres psql创建新角色(role)初始时,只有一个角色:postgres切换成 postgres 用户后,就可以用下面的命令创建新用户:postgres@VM-0-9-ubuntu:~$ createuser --interactive同样,在其他用户下,可以直接使用命令:sud...原创 2019-02-18 18:59:28 · 1412 阅读 · 0 评论
分享