Windows环境安装PostgreSQL

Windows环境安装PostgreSQL

安装步骤

要在Docker Desktop上安装PostgreSQL数据库,请按照以下步骤进行操作:

  1. 首先,确保您已经安装了Docker Desktop,并且它正在运行。

  2. 打开终端或命令提示符,并输入以下命令来从Docker Hub下载并运行PostgreSQL镜像:

    docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
    

    这将在Docker容器中运行一个名为"my-postgres"的PostgreSQL实例。您可以根据需要更改容器名称和密码。

  3. 等待一段时间,直到容器成功启动。您可以使用以下命令检查容器的状态:

    docker ps
    

    如果容器正在运行,您将看到一个包含PostgreSQL容器的条目。

  4. 现在,您可以使用任何支持PostgreSQL的客户端工具连接到数据库。例如,您可以使用psql命令行工具连接到容器中的数据库:

    使用完整的路径来运行 psql 命令:如果您知道 PostgreSQL 客户端工具的安装路径,可以直接使用完整的路径来运行 psql 命令。例如,在 Windows 上,您可以尝试运行以下命令:

    "C:\Program Files\PostgreSQL\<version>\bin\psql" -h localhost -p 5432 -U postgres
    

    请确保将 <version> 替换为您安装的 PostgreSQL 版本号。

    psql -h localhost -p 5432 -U postgres
    

    或者

    docker exec -it <container_id> psql -U postgres
    

    <container_id> 替换为您的 PostgreSQL 容器的 ID 或名称。

    输入密码时,请使用在第2步中设置的密码。

  5. 您已成功在Docker Desktop上安装和运行了PostgreSQL数据库。现在,您可以使用该数据库进行开发和测试。

常见错误

docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:5432 -> 0.0.0.0:0: listen tcp 0.0.0.0:5432: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

这个错误提示表明端口 5432 在您的系统上已被占用,因此 Docker 无法将容器的端口映射到主机上。要解决此问题,您可以尝试以下几种方法:

  1. 检查端口占用情况:运行以下命令以查看系统上当前正在使用的端口:

    netstat -ano | findstr :5432
    

    如果该端口已被占用,您将看到相关的进程ID(PID)。请记下该PID。

  2. 停止占用端口的进程:使用以下命令停止占用端口的进程(将 <PID> 替换为在上一步中找到的进程ID):

    • 在 Windows 上:

      taskkill /PID <PID> /F
      
    • 在 macOS 或 Linux 上:

      kill <PID>
      

    请注意,停止进程可能会影响正在运行的其他应用程序,请谨慎操作。

  3. 更改映射的端口:如果您不想停止占用端口的进程,您可以尝试将容器中的端口映射到主机上的其他可用端口。例如,您可以将 -p 5432:5432 修改为 -p 5433:5432,将容器的端口 5432 映射到主机的端口 5433。

    docker run --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5433:5432 -d postgres
    

    这样做后,您可以使用主机上的端口 5433 来连接到 PostgreSQL 数据库。

请注意,以上方法可能需要管理员权限或超级用户权限(如在 macOS 或 Linux 上使用 sudo 命令)。如果问题仍然存在,请确保您的系统配置正确,并确保没有其他程序正在占用该端口。

如果端口未被占用仍然有以上提示,可以尝试在cmd终端以管理员身份执行以下命令

net stop winnat

# 然后运行docker

net start winnat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用方法:打开scws-1.2.3\win32里的解决方案文件,里面包括了scws和zhparser,另外一个是scws的php扩展不用编译 zhparser是Postgresql中进行中文分词的常用扩展,网上的相关资料很多,安装的教程也不少,但大多数是linux的,并没有windows安装介绍。原因有两个方面,一个是本身像这种数据库服务器一般都是linux系统的,另外一个比较致命,zhparser本身并没提供windows环境下的编译工程,连依赖库scws的readme里也建议在linux环境下使用,或者用cygwin或mingw一类工具。对于博主这种只使用windows环境(其实Postgresql也是刚接触),连makefile也搞不明白的真是头大。好在万变不离其中,编译环境只是工具,只要搞清楚个中原理(看代码),移植到windows+VS的环境应该也不是难事(当然这个也只是在轻量级的库下面适用)。下面进入正题: 干货在这里 ① 编译scws:由于 zhparser是基于scws(scws是简易中文分词系统的缩写,它的原理其实很简单,基于词典,将文本中的内容按照词典进行分词,提取关键字等。)做的分词,因此先要编译scws,网上下载下来的源码有vs2008的版本,因此,直接编译,后来出现头文件无法加入的错误,将相关文件编码方式修改成unicode解决(利用notepad++ 编码->转换为UTF-8编码)。 ② 编译zhparser:由于zhparser只提供了linux下面的makefile文件,想着用Mingw去编译,后来因为postgresql所在目录有空格,导致编译过程也失败。只好到vs2008里自建一个工程,建好工程后,首先把scws的头文件和库文件加进去,然后把postgresql的头文件和库文件加进去,设置项目属性为生成dll文件。 ③ 扩展安装:编译成功以后,在postgresql下面运行:create extension zhparser; 提示找不到control文件,在下载的源码文件夹里找到该文件,放到指定目录,再次运行sql,提示找不到dll文件,将dll文件放到指定目录,再运行,提示找不到zhprs_start函数,看来是dll没有正常explort出函数,修改源代码中的相关函数声明,再次运行后,显示成功。但zhparser源文件下其实还有很多文件,包括一个词典文件和ini配制文件,还不知道应该放在何处。 ④ zhparser运行环境配制:运行测试sql语句,发现并没有实现分词,想起来应该是词典位置不正确,到zhparser源码中去搜寻,发现如下代码,看来是放到tsearch_data目录下面,用同样的方法找到ini文件的目录,将它们都放进去,再次运行测试代码,得到正确结果。 测试代码: REATE EXTENSION zhparser; -- make test configuration using parser CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser); ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple; select to_tsvector('testzhcfg','南京市长江大桥');

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值