我需要访问大约四年前的一个小型数据库。我有原始安装程序和整个原始目录(包括文件data
夹)。不幸的是,9.3 和 12.0 的安装程序绝对拒绝为 Windows 创建服务。在完成那个项目后,我彻底放弃了 PostgreSQL,尽管我确实需要访问数据库(最好使用 HeidiSQL)。
我努力了:
- 安装 9.3 版的干净副本(是的,旧的,不是永久使用)。
- 安装 12.0 的全新副本。
- 安装 9.3 版的副本,并使用旧的安装目录,做过但仍然没有创建服务,因此无法识别并使用这些设置。
我偶尔会用非吸吮服务经理管理服务并尝试手动创建服务。
我不知道如何让 PostgreSQL 运行,即使是在完全全新安装的情况下。我查看了至少十几个线程(主要是 Stack),但什么都没用。
- 安装目录是
C:\MEDIA\INTERNET\WAMP\PostgreSQL 9.3 x64
。
我只需要能够在 HeidiSQL 中查看旧的/小型 PostgreSQL 数据库,或者是否有一个智能程序可以查看原始数据库文件并导出所有数据库,而无需运行 PostgreSQL?我无法确认它是否在任何情况下运行过。
如何手动创建 PostgreSQL 服务或者如何从 PostgreSQL 导出所有数据库而无需在任何上下文中运行 PostgreSQL?
答案1
嗯...我从 1995 年就开始使用 Postgres 了,而且从 21 世纪初就开始在 Windows 上运行 Postgres,肯定是在 8.2 版之前,而我现在仍然在 Windows 7 上运行 9.3 版,就在我输入这段文字的这台机器上。
您没有说明的一件事是您想要运行哪个版本的 Windows,尽管我们看到它是一个 64 位处理器。
我完成此安装已经有一段时间了,但我相信 Windows 的安装程序不是由 PostgreSQL 团队提供的,而是由 EnterpriseDb 提供的 - 这是您运行的吗?
也许你有位腐烂?9.3.1.1 版本上的 sha1sum:
20bd1b72b5707c74a013e1bcb9a36502c8f0544e postgresql-9.3.1-1-windows-x64.exe
我已经成功使用 Cygwin 的工具向 Windows 添加服务。下面是它能做什么的简要说明(这是旧版本):
$ cygrunsrv.exe --help
Usage: cygrunsrv [OPTION]...
Main options: Exactly one is required.
-I, --install <svc_name> Installes a new service named <svc_name>.
-R, --remove <svc_name> Removes a service named <svc_name>.
-S, --start <svc_name> Starts a service named <svc_name>.
-E, --stop <svc_name> Stops a service named <svc_name>.
-Q, --query <svc_name> Queries a service named <svc_name>.
-L, --list [server] Lists services that have been installed
with cygrunsrv.
<svc_name> can be a local service or "server/svc_name" or "server\svc_name".
Required install options:
-p, --path <app_path> Application path which is run as a service.
Miscellaneous install options:
-P, --crs-path <path> Path to cygrunsrv. This is useful for testing or
when installing a service on a remote machine.
-a, --args <args> Optional string with command line options which
is given to the service application on startup.
-c, --chdir <directory> Optional directory which will be used as working
directory for the application.
-e, --env <VAR=VALUE> Optional environment strings which are added
to the environment when service is started.
You can add up to 255 environment strings using
the `--env' option.
Note: /bin is always added to $PATH to allow all
started applications to find cygwin DLLs.
-d, --disp <display name> Optional string which contains the display name
of the service. Defaults to service name.
-f, --desc <description> Optional string which contains the service
description.
-t, --type [auto|manual] Optional start type of service. Defaults to `auto'.
-u, --user <user name> Optional user name to start service as.
Defaults to SYSTEM account.
-w, --passwd <password> Optional password for user. Only needed
if a user is given. If a user has an empty
password, enter `-w '. If a user is given but
no password, cygrunsrv will ask for a password
interactively.
-s, --termsig <signal> Optional signal to send to service application
when service is stopped. <signal> can be a number
or a signal name such as HUP, INT, QUIT, etc.
Default is TERM.
-z, --shutsig <signal> Optional signal to send to service application
when shutdown has been initiated. Default is the
same signal as defined as termination signal.
-y, --dep <svc_name2> Optional name of service that must be started
before this new service. The --dep option may
be given up to 16 times, listing another dependent
service each time.
-0, --stdin <file> Optional input file used for stdin redirection.
Default is /dev/null.
-1, --stdout <file> Optional output file used for stdout redirection.
Default is /var/log/<svc_name>.log.
-2, --stderr <file> Optional output file used for stderr redirection.
Default is /var/log/<svc_name>.log.
-x, --pidfile <file> Optional path for .pid file written by application
after fork().
Default is that application must not fork().
-n, --neverexits Service should never exit by itself.
-O, --preshutdown Stop service application during system preshutdown.
-o, --shutdown Stop service application during system shutdown.
(Only one of --preshutdown and --shutdown is
accepted. Preshutdown is preferred, but only
available since Windows Vista/Longhorn. On earlier
OS versions it's silently converted to --shutdown).
-i, --interactive Allow service to interact with the desktop
(No effect since Windows Vista/Longhorn).
-j, --nohide Don't hide console window when service interacts
with desktop.
Informative output:
-V, --verbose When used with --query or --list, causes extra
-h, --help print this help, then exit.
-v, --version print cygrunsrv program version number, then exit.
我已经用它成功地向 Windows(最高可达 Windows 7,但不超过 Windows 7)添加了服务,并且 Cygwin 项目很活跃,并且可能在最新的版本上运行良好。
此外,我在许多没有正式安装 Postgres 的系统上运行过 Postgres;它有自己的配置文件并且是自包含的。如果您习惯使用命令行工具,那么您可能可以非常轻松地“手动”运行 Postgres - 只需按照说明操作,就像它在 Linux / Unix 机器上运行一样!(如果您尝试这样做,我强烈建议您使用 Cygwin 作为 CLI。)话虽如此,PGAdmin 肯定需要那些 Windows 注册表项,因此您的图形工具可能不会以这种方式运行,但谁知道呢,它们可能会!它只是一个要连接的端口和一些权限 / 身份验证传递。
此外,这些年来,我还为自己写了一些安装说明,以帮助后来者。以下是我写的关于 Windows 上的 Postgres 的内容,上次更新是在 2009 年,因此链接可能不再有效:
$ cat PostgresOnWindows/README.TXT
NOTE! Before you run the installation, you must extract the entire
ZIP file to a temporary directory. Just double-clicking on the
MSI files inside the ZIP will NOT work.
Before you begin, please read the installation instructions at
http://pginstaller.projects.postgresql.org
Also see the FAQ available at
http://www.postgresql.org/docs/faqs.FAQ_windows.html
另外,找一个像我这样已经安装并运行它来提取数据的人,因为听起来你并不关心使用 Postgres。