数据库桌面应用【免费下载链接】PostgresAppThe easiest way to get started with PostgreSQL on the Mac项目地址https://gitcode.com/gh_mirrors/po/PostgresApp点击查看免费下载Postgres.app 以Mac 上最轻松的 PostgreSQL 入门方式为设计目标其更新机制同样把复杂性隐藏在界面之后内置 Sparkle 自动更新、按 PostgreSQL 主版本捆绑发行、首次启动自动接管旧数据目录。本文以 docs/documentation/update.md 为骨架结合仓库源码深入拆解 Postgres.app 的版本策略、Check For Updates…的底层实现、更新前后的必要检查项以及从 Legacy 版本升级时如何正确迁移数据读完即可安全、无痛地完成一次 Postgres.app 升级。一、版本机制Postgres.app 与 PostgreSQL 的双层版本体系Postgres.app 的更新机制建立在两层版本之上Postgres.app 自身的应用版本以及其捆绑的 PostgreSQL 主版本。理解二者的区别是规划升级路径的前提。PostgreSQL 主版本与次版本PostgreSQL 采用独立的版本策略主版本Major Version自版本号 10 起主版本为版本号的第一段如14在 9.6 及更早的版本中主版本为前两段如9.6。主版本大约每年发布一次包含新功能并且将数据目录升级到新主版本需要执行手动迁移流程参见 migrating-data.md。次版本Minor Version由版本号最后一段表示如14.3或9.6.24。次版本大约每季度为所有受支持的主版本发布一次主要包含 bug 修复与安全更新涵盖 PostgreSQL 本身及其捆绑的依赖。次版本升级只需重启应用即可官方强烈建议安装。Postgres.app 的捆绑策略与多版本并行Postgres.app 的每个发行版都捆绑了特定主版本的 PostgreSQL 二进制。当你在 Check For Updates… 中检查更新时是否会看到新版本取决于你当前运行的发行版类型单版本捆绑只显示与当前捆绑的同一个主版本相关的新发行多版本捆绑显示所有受支持主版本的新发行。这正是多版本并行的基础如果你从 下载页面 获取多版本捆绑的 Postgres.app并给不同服务器配置不同的Port 端口号就可以在 Mac 上同时运行多个 PostgreSQL 主版本例如 14 与 15 并存。从源码层面看捆绑关系写死在应用包结构中PostgreSQL 二进制存放在应用包内的Contents/Versions/目录下每个主版本一个子目录Postgres/Server.swift 中定义的ServerStatus枚举NoBinaries、PortInUse、DataDirInUse、DataDirEmpty、Running、Startable、Unknown会基于这些二进制目录与数据目录、端口状态动态判定服务器状态其中NoBinaries就对应当前捆绑不包含该数据目录所需版本的场景。二、Postgres.app 2 的自动更新Sparkle 驱动的一键升级Postgres.app 2.0 及更高版本内置自动更新功能。使用方式非常直观打开 Postgres.app从Postgres菜单选择Check For Updates…。更新检查、下载、安装均由此入口触发。仓库源码可以证实其底层依赖 Sparkle 框架Postgres/Info.plist 中配置了更新源与签名校验SUFeedURL指向https://postgresapp.com/sparkle/updates_$(PG_BINARIES_VERSIONS).xml——Feed URL 按捆绑的 PostgreSQL 版本集合PG_BINARIES_VERSIONS动态生成这正是上文单版本/多版本捆绑决定可见更新的实现方式SUPublicDSAKeyFile指向dsa_pub.pem仓库根目录 dsa_pub.pem用于对更新包做 DSA 签名验证保证下载的更新未被篡改。Postgres/AppDelegate.swift 中AppDelegate实现了SUUpdaterDelegate并在 Postgres/AppDelegate.swift 的updater(_:willInstallUpdate:)回调中于安装更新前自动停止所有正在运行的服务器server.stopSync()同时终止菜单辅助程序com.postgresapp.Postgres2MenuHelper确保二进制替换过程中没有进程占用文件。这套机制对开发者的启示Postgres.app 的自动更新是应用 数据库二进制一体化的更新更新安装即意味着正在运行的 PostgreSQL 会被短暂停止并重启因此不适合在业务高峰期无准备地触发。三、更新前后的推荐检查清单虽然 Postgres.app 的自我更新应用本身与被捆绑的 PostgreSQL 二进制通常是轻松无痛的过程但官方仍建议在更新前/后执行以下附加步骤逐条核对阅读 Postgres.app 的发布说明在 Check for Update 窗口中会直接显示。重点检查版本专属说明尤其是被弃用deprecated与被移除removed的捆绑 PostgreSQL 版本——若你正在使用某个即将被移除的主版本需要提前规划迁移。阅读你正在使用的 PostgreSQL 主版本的次版本发布说明注意各版本说明顶部的特殊提示对于你可能跳过的所有次版本也建议一并查看避免遗漏累积的注意事项。执行发布说明中建议的操作通常需要对每一个数据库分别执行而不是一次性的全局操作。检查捆绑扩展的 SQL 定义是否需要更新如果你在数据库中安装了捆绑的扩展它们的 SQL 定义可能也需要同步更新。可用下面的查询列出所有已安装但版本落后的扩展SELECT * FROM pg_available_extensions WHERE installed_version IS NOT NULL AND default_version installed_version;如果查询有结果对列出的每个扩展xyz执行ALTER EXTENSION xyz UPDATE;若结果中很可能包含 PostGIS 系列扩展建议改用SELECT postgis_extensions_upgrade();以正确处理 PostGIS 各内部扩展之间的依赖关系。以上操作同样需要对每一个数据库分别执行。四、从 Legacy Postgres.app9.5.x.x / 9.6.x.x / 10.x.x升级到 Postgres.app 2如果你正在运行旧版 Postgres.app 9.5.x.x、9.6.x.x 或 10.x.x升级到 Postgres.app 2 并不需要迁移数据——只需替换/Applications中的 App退出旧版本的 Postgres.app下载新版本的 Postgres.app双击下载的.dmg挂载用新版本替换/Applications中的旧版本双击新版本启动。Postgres.app 2 会自动检测标准位置~/Library/Application Support/Postgres下的已有数据目录如果你把数据目录放在其他位置则需要手动添加打开侧边栏sidebar点击加号按钮将其加入。源码级佐证首次启动自动接管数据目录仓库源码证实了第 4 步自动检测的实现Postgres/ServerManagerExtras.swift 中的checkForExistingDataDirectories()会在首次启动isFirstLaunch()为真时被调用流程为枚举FileManager.default.applicationSupportDirectoryPath()即~/Library/Application Support/Postgres下的顶层目录跳过隐藏文件与子目录递归对每个目录读取其PG_VERSION文件Postgres/Server.swift 也通过varPath/PG_VERSION读取数据目录版本通过BinaryManager.shared.getBinary(for:)找到对应版本的二进制若目录尚未被任何 Server 引用则自动创建一个新的Server名称如 PostgreSQL 15并保存到用户配置中。也就是说只要数据目录位于标准位置且版本二进制存在替换 App 后数据目录会自动出现在侧边栏无需任何手工配置。五、从更早的 Legacy 版本升级必须迁移数据如果你的版本比 9.5 更早直接替换 App 是不够的——数据目录格式无法被新主版本直接读取你需要先 迁移数据推荐方式使用pg_dumpall生成整库 SQL 备份在启动新服务器后用psql还原适用于大多数场景。选择性迁移使用pg_dump逐个数据库导出配合pg_dumpall --globals-only保留角色与表空间。大型数据库如果数据量极大、pg_dump太慢或占用磁盘过多可使用pg_upgrade。注意它要求旧、新版本的二进制同时存在于Contents/Versions/目录中具体步骤含initdb与pg_upgrade命令示例见 migrating-data.md。迁移完成后可在 Server Settings… 中切换开机自动启动的服务器并清理旧数据目录。备选方案定制支持旧版本的 Postgres.app 2如果你希望继续使用旧版服务器另一个途径是制作一个支持旧版本二进制的 Postgres.app 2 定制版Postgres.app 的二进制全部位于应用包Contents/Versions/下将旧版本所需的二进制目录复制进去即可具体说明见 下载页面其redirect_from声明了all-versions.html的历史路径。troubleshooting.md 中同样提到首次启动后可以通过从其他发行版复制版本目录到/Applications/Postgres.app/Contents/Versions/来扩充可用版本。六、更新相关的常见问题速查升级过程中可能遇到以下典型场景详见 troubleshooting.mdPostgreSQL version not installed当前捆绑不包含该数据目录所需版本。若该版本仍在支持期内可从 下载页面 下载不同捆绑若已停止支持请尽快参考 migrating-data.md 迁移数据。端口被占用 / 数据目录被占用升级前确保旧服务器已完全停止多服务器并行时使用不同端口。旧数据目录无法导入checkForExistingDataDirectories()依赖目录下的PG_VERSION文件识别版本见 Postgres/ServerManagerExtras.swift缺少该文件时导入会失败并记录日志此时需手动通过侧边栏加号按钮添加。小结Postgres.app 的升级路径可以概括为三条原则同主版本的次版本升级用 Check For Updates… 一键完成9.5/9.6/10 等 Legacy 版本替换 App 后自动接管数据目录即可更早版本必须先完成数据迁移pg_dumpall / pg_dump / pg_upgrade 任选。而这一切的底层——Sparkle 更新源按PG_BINARIES_VERSIONS动态生成、安装前自动停机、首次启动扫描~/Library/Application Support/Postgres——都能在仓库的 Info.plist、AppDelegate.swift 与 ServerManagerExtras.swift 中找到直接实现。理解这套机制后你便能在升级窗口规划、数据安全与多版本并行之间做出明确决策。赞分享数据库桌面应用【免费下载链接】PostgresAppThe easiest way to get started with PostgreSQL on the Mac项目地址https://gitcode.com/gh_mirrors/po/PostgresApp点击查看免费下载相关推荐DLSS Swapper 零基础上手10 分钟给老游戏换上新版 DLSSDLSS Swapper 零基础上手10 分钟给老游戏换上新版 DLSS 几年前买的游戏里面的 DLSS 可能还停留在旧版本想升级却只能重装整个游戏就为桌面应用DARC升级迁移版本更新与数据迁移指南DARC升级迁移版本更新与数据迁移指南 概述 DARCDecentralized Autonomous Regulated Company作为运行在EVM区块链智能合约DeFi如何轻松导入Rhinoceros 3D模型到Blender这款免费插件让你的工作流效率翻倍如何轻松导入Rhinoceros 3D模型到Blender这款免费插件让你的工作流效率翻倍 import_3dm 是一款专为Blender打造的开源插件能开发工具代码质量静态分析CLI上一篇如何用Speech Emotion Analyzer快速构建语音情感检测系统完整入门指南下一篇GoRequest源码分析深入理解SuperAgent架构设计原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
吴恩达《AI Engineering Skills Map》译读:四项核心能力与持续学习底座 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:10:32
如何用 Claude Skill 做教学视频?TaoToken 统一 Key 接入 Remotion 渲染管线 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 21:10:26
3个维度拆解钓鱼网站盗号风险:企业官网怎么选安全方案 3个维度拆解钓鱼网站盗号风险:企业官网怎么选安全方案 备案流程一头雾水,是不是让你对着工信部的网页发呆?别急,这背后往往藏着更大的隐患——你的登录系统可能被“钓鱼网站盗号”盯上了。很多老板觉得,只要把网站搭起来,域名备案通过,就万事大吉。大… · 2026/9/27 23:03:49
制作网站制作公司避坑指南:从零搭建不踩雷 制作网站制作公司避坑指南:从零搭建不踩雷 别再被那些千篇一律的模板网站恶心了。很多老板找制作网站制作公司,花了几万块,结果交出来的东西跟网上免费的模板没两样,配色土气,功能僵硬,稍微改个按钮位置都要加钱。更坑的是,这种“套壳”网站后期维护成… · 2026/9/27 23:03:42
券商金工研报复现实战:从数据口径到因子验证的完整指南 简介:一套面向量化研究学习者的券商金工研报Python复现教程资源包,适合金融工程背景的学生、数据科学爱好者及希望将研报策略落地的从业者。包内按研报主题分文件夹整理,每个目录均配有对应券商研究报告或相关论文,并提供可运行的… · 2026/9/27 23:03:36
杭州潮工智能设备:三轴数控加工中心源头厂家避坑挑选指南 很多机加工从业者选购三轴数控加工中心的时候,都踩过不少坑:要么是小作坊拼装的设备精度差,用不了半年就出问题;要么是中间商层层加价,拿到手的设备比出厂价高出一大截;要么是售后跟不上,出了问题找不到人处理… · 2026/9/27 23:03:36
OpenSSL 3.3.2预编译库:Win10+VS2019 x64动态/静态库配置指南 简介:面向 Windows 10 MSVC 2019 x64 平台预编译完成的 OpenSSL 3.3.2 库,同时提供动态库与静态库,适合在 C/C 工程中快速接入 SSL/TLS 加密能力的开发者,免去本地源码编译与依赖配置的繁琐步骤。压缩包共 980 个文件,… · 2026/9/27 23:03:36
Python电商数据分析系统:从订单CSV清洗到RFM分层与可视化 简介:电商平台数据分析是Python课程设计中的高频选题。这套源码提供了完整可运行的实现方案,面向需要完成期末大作业或课程设计的高校学生,也适合Python数据分析入门者对照学习。系统围绕销售趋势、回购率、RFM用户分群、渠道来源等核心维度展… · 2026/9/27 23:03:36
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01