在 Windows 上安装 Postgres 以与 Ruby-on-Rails 一起使用

2024-02-07

目前我收到以下错误:

PGError(致命:用户“postgres”的密码身份验证失败):

当我的应用程序尝试访问数据库时。

我想测试我对 postgres 的 SQL 调用,因为我的应用程序在 Heroku 上投入生产时会定期中断,因为 postgres 比 sqlite 3 有更严格的要求(我认为这可能是一个健康的事情)。所以我有一个类似的请求to this https://stackoverflow.com/questions/1226276/tips-for-installing-postgres-for-a-rails-project-on-a-linux-box请获取有关在 Windows (7) 上安装 postgres 以便与 ruby​​ on Rails 一起使用的最新教程。我原以为下载和安装会很快 20 分钟,但 2 个多小时后,我认为我还没有很接近。到目前为止我已经:

下载并安装 Postgres 版本 8.4.8-1从这里 http://www.enterprisedb.com/products-services-training/pgdownload#windows

设置我的环境变量,使路径(对于用户)为:C:\Ruby192\bin;C:\Program Files (x86)\PostgreSQL\8.4\bin

Gemfile:

gem 'pg', '0.11.0'  # instead of gem 'sqlite3', '1.3.3'

ran bundle install我的 Rails 应用程序似乎成功了,但尚未找到验证安装的简单方法。

设置数据库.yml正如这里所建议的 http://www.ruby-forum.com/topic/132541 to:

development:
  adapter: postgresql
  database: db/development
  username: postgres
  password: secret
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000

我知道我需要设置Postgres的用户名和密码 http://www.cyberciti.biz/faq/howto-add-postgresql-user-account/, 也许还启动 postgres 服务器,连接到它(?) http://www.justskins.com/forums/postgres-52831.html并输入我的本地 IP 地址,我将连接到它到某处的配置文件中 http://www.postgresonline.com/journal/archives/172-Starting-PostgreSQL-in-windows-without-install.html然后编辑“C:\Program Files (x86)\PostgreSQL\8.4\data”等中的其他 .conf 文件之一...

我认为 Rails 让我变得软弱,是我想得太多了,还是设置起来相当棘手,我应该回到 Sqlite3,其中还有非常有用的 SQLite Manager、Firefox 插件?

我仍在寻找安装和使用 Postgres for Rails 的初学者指南,但到目前为止,我只对我查看/尝试过的大多数内容感到困惑,例如this http://oldwiki.rubyonrails.org/rails/pages/PostgreSQL, this http://www.enterprisedb.com/resources-community/pginst-guide#interactive, this https://bitbucket.org/ged/ruby-pg/wiki/Win32Instructions, this https://bitbucket.org/ged/ruby-pg/wiki/Home, this http://www.robbyonrails.com/articles/2010/02/08/installing-ruby-on-rails-passenger-postgresql-mysql-oh-my-zsh-on-snow-leopard-fourth-edition(对于雪豹),this http://www.adderpit.com/practical-postgresql/x342.htm(linux).

任何指示将不胜感激。谢谢!

James


一种在 Windows 7 上安装 Postgres 的方法,用作 Rails 3 (3.0.7) 项目的 PostgreSQL 数据库。


Preamble(你可以跳过这一点)

因此,首先要指出的是,Postgres 不仅仅是与 .sqlite3 不同的文件扩展名,它还是管理数据库的完整机制。因此,它具有客户端/服务器模型,您需要对其进行设置才能使用 Postgres 作为 Rails 应用程序的数据库。

经历相当痛苦的 Postgres 设置与几乎毫不费力的 sqlite 设置的动机:如果您要部署到 Heroku,他们当前正在使用 Postgres,因此一些在 sqlite3 上正常的 SQL 调用在与 Postgres 一起使用时会中断。在本地调试 postgres 比在 Heroku 的服务器上调试要容易得多。

所以我做了以下事情: (免责声明:我可能忘记了包括我所做的一些事情......我花了超过 48 小时的断断续续的痛苦才让它发挥作用......如果以下建议对你不起作用,那么巨大的(2300页!!)但是非常详尽的 Postgres 文档 http://www.postgresql.org/docs/manuals/应该有帮助。如果你真的想使用 Postgres,我建议你下载这个,因为它有很多我才刚刚开始理解其重要性的材料。) (第二个免责声明:我几乎肯定违反了 20 条合理的 Postgres 准则,并在这样做的同时暴露了 Postgres 数据库中的安全漏洞。如果有经验的 Postgres 用户不同意任何明显的事情,请编辑我的帖子。)


.Step 1.下载并安装 PostgreSQL v9.0.4-1 从here http://www.enterprisedb.com/products-services-training/pgdownload#windows因为here http://wiki.postgresql.org/wiki/Running_%26_Installing_PostgreSQL_On_Native_Windows#What_versions_of_Windows_does_PostgreSQL_run_on.3F说 Windows 7 上只支持 9.0.x。我保留了所有默认选项,只是在 Postgres 安装程序提示时使用“secret”作为密码(同样不完全确定在互联网上共享该信息的后果是什么)是......很快就会发现我确信)。您将在第 3 步中需要此密码。

.Step 2.更改环境变量,使 Path (对于系统,不是用户 http://wiki.postgresql.org/wiki/Running_%26_Installing_PostgreSQL_On_Native_Windows#How_do_I_set_an_environment_variable.3F(我不确定这是否重要))是:C:\Program Files\PostgreSQL\9.0\bin
(注意:我使用的是 64 位 Windows,因此它没有安装在 'C:\Program Files (x86)\PostgreS...' 中的 32 位版本

不要忘记更改文件夹 PostgreSQL\9.0 的访问权限并删除该文件夹或内容的任何默认只读权限。 (您可能还需要重新启动计算机才能使这些生效 - 感谢@Gavin - 尽管不太可能)。

.Step 3.通过尝试创建新数据库来测试 Postgres 安装: 从命令行:createdb -U postgres mydb_as_postgres。 现在应该提示您输入密码,如果没有,则可能需要先启动服务器(我不记得是否需要这样做)。最简单的方法是通过 pgAdmin III,它应该是位于类似文件夹中的“pgAdmin3.exe”C:\Program Files\PostgreSQL\9.0\bin。启动 pgAdmin III 后,左侧应该有一个名为“对象浏览器”的面板。其中应该有一棵树:

服务器组 > 服务器 > PostgreSQL 9.0 (localhost:5432)

右键单击“PostgreSQL 9.0 (localhost:5432)”并选择“连接”。

The createdb -U postgres mydb_as_postgres命令应该创建一个名为“mydb_as_postgres”的新数据库,您可以通过启动 pgAdmin III 并双击“PostgreSQL 9.0 (localhost:5432)”来检查该数据库。在此之下应该有:

Databases (2)其中应该列出 2 个名为mydb_as_postgres and postgres

我叫它_as_postgres因为-U postgres该命令的一部分告诉 Postgres 以 postgres 用户作为所有者来创建数据库,当您没有以 postgres 用户身份登录时,您需要指定该数据库。我将所有文件存储为“AJames”用户,因此,如果您是同一个人,并且希望在以其他用户身份登录时继续开发应用程序,您现在需要为该用户创建一个 Postgres“角色”(请参阅​​步骤4).

.Step 4.通过 pgAdmin III。右键单击登录角色(对我来说是):

对象浏览器 > 服务器组 > 服务器 > PostgreSQL 9.0 (localhost:5432) > 登录角色

右键单击登录角色并选择“新建登录角色...” 在角色名称中,输入您的操作系统用户名,对我来说是 AJames, 并在“角色权限”选项卡下填写您的密码,我选中了所有复选框,但经验丰富的 postgres 用户可能会强烈建议仅选中“从父角色继承权限”和“可以创建数据库对象”,但是我'我不是一个有经验的用户,只是想在 Postgres 中调试 Rails SQL 调用,所以我还检查了“超级用户”和“可以创建角色”,以防万一。

.Step 5.您现在应该能够创建新数据库,而无需以 postgres 用户身份登录。尝试输入:

createdb mydb_as_user

希望这对你有用。

.Step 6.好的,您的 Rails 'db/' 目录中已经有了一个development.sqlite3 文件。最初我打算将下一个测试设置为将其从 sqlite3 转换为 psql。
虽然我无法让它工作,但我在这里留下了我的尝试,因为我使用的解决方案需要在 Heroku.com 上的 Rails 应用程序中包含数据(请参阅第 7 步以后的解决方案)。对于那些只有本地应用程序且 Heroku 中没有数据的人,他们无法使用相同的方法,因此他们可能需要探索如下内容:

x6.1 首先,通过尝试命令行中的命令来测试“psql”,例如:

psql mydb_as_user

这应该显示如下内容(输入密码后):

C:>psql mydb_as_user
Password:
psql (9.0.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

mydb5=# 

x6.2 尝试输入:

CREATE TABLE users_table (id integer, "name" text);

它应该显示:

CREATE TABLE
mydb5=#

如果您检查 pgAdmin III,您应该会看到下面的表格:

对象浏览器 > 服务器组 > 服务器 > PostgreSQL 9.0 (localhost:5432) > 数据库 > mydb_as_user > 模式 > 公共 > 表 > users_table >

x6.3 好的,接下来尝试一下转换。下载的sqlite-shell http://www.sqlite.org/download.htmlWindows 的预编译二进制文件。
x6.4 创建一个新目录,我使用“C:\temp”并将 sqlite3.exe 和development.sqlite3 文件放入其中。
x6.5 使用以下命令(来自here http://www.sqlite.org/sqlite.html)将development.sqlite3 数据库转储到Postgres 中。

sqlite3 development .dump | psql development2

你可能会收到如下错误:

psql: FATAL: database "development2" does not exist

x6.6 所以我进入 pgAdmin III 并创建了一个开发 2 数据库,再次尝试该命令并得到:

ERROR:  syntax error at or near "PRAGMA"
LINE 1: PRAGMA foreign_keys=OFF;
        ^
BEGIN
COMMIT

就像我说的,我无法让它发挥作用。我确信有一种方法可以解决这个错误,但我想到了一种不同的方法,所以我改为使用这个解决方案(它需要一个 Heroku 帐户来保存您的数据,并使用 Taps gem 将 sqlite3 转换为 psql (我相信):

.Step 7.在 pgAdmin III 中我创建了另一个数据库。在属性选项卡下,我设置名称:“development”,所有者:“AJames”(将其替换为您自己的 Windows 用户名)。在“权限”选项卡下,设置角色:“公共”并选中“全部”选项(认为这会重置为未选中状态,所以我不确定是否有必要)。

.Step 8. add gem 'pg', '0.11.0'到你的 gem 文件。您可能还想删除:gem 'sqlite3'也在这一点上。

.Step 9.将database.yml设置为在这里建议 http://www.ruby-forum.com/topic/132541 to:

development:
  adapter: postgresql
  database: db/development
  username: AJames # replace this with your own user name
  password: secret # replace this with your own password
  host: localhost
  encoding: UTF8
  pool: 5
  timeout: 5000

如果您正在开发一个开源项目并且不希望您的密码被公开,请查看以下问题的一些答案在 Rails 应用程序中安全地提供数据库密码 https://stackoverflow.com/questions/17151324/securely-providing-the-database-password-in-a-rails-app.

.步骤10。从 Rails 应用程序根目录中的命令行运行:rake db:migrate这将在 Postgres 数据库中创建新架构和所有表。

.步骤11。 run heroku db:pull从命令行(同样是在 Rails 应用程序的根目录中)将所有数据拉下来并放入新的空 Postgres 数据库中。我认为此时您的水龙头宝石将为您完成这项工作。


.步骤12。希望没有第12步! ...它现在应该对你有用了。快乐 RoR PostgreSQL 调试!如果其中有任何错误,请编辑或告诉我。

另外,这里列出了可能有趣/有用的其他内容:

  • 这是一个关于 Postgres 密码的博客文章 http://pgsnake.blogspot.com/2010/07/postgresql-passwords-and-installers.html,它们的用途, 为什么需要它们,如何更改它们等。
  • 这在“创建空间数据库”下对于新手来说非常有用 了解 pg_hba.conf 的含义 http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgis_tut01 and 第二个链接 雷诺在上面给出了 https://help.ubuntu.com/community/PostgreSQL,在“使用 pgAdmin III GUI”下对于 在尝试安装之前测试一下 postgres 是否真正工作 它与Rails(即尝试创建一个数据库并放置一个表和 一些数据)。
  • In the 庞大但非常全面的 Postgres 文档 http://www.postgresql.org/docs/manuals/, ID 从第 58 页开始,“I.教程'。然后在 pdf 第 431 页(!)上有 我也发现“第 17 章服务器设置和操作”很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 上安装 Postgres 以与 Ruby-on-Rails 一起使用 的相关文章

  • Rails Active Admin css 与 Twitter Bootstrap css 冲突

    我对 Rails 资产管道有点陌生 所以我可能做错了什么 我正在尝试为我的后端使用 Active Admin 为我的前端应用程序使用 twitter bootstrap css 我将 bootstrap css 添加到 应用程序 资产 样式
  • 在rails中,如何将记录作为csv文件返回

    我有一个名为 Entries 的简单数据库表 class CreateEntries lt ActiveRecord Migration def self up create table entries do t t string firs
  • PostgreSQL 仅当列存在时才重命名该列

    我在中找不到PostgreSQL 文档 https www postgresql org docs 12 sql altertable html如果有办法运行 ALTER TABLE tablename RENAME COLUMN IF E
  • 在 ec2 上托管 Rails

    我想将 Rails 部署到亚马逊 ec2 上 我看过 poolparty 和 ec2onrails 但似乎都不再维护了 人们用什么来做到这一点 都是自制的木偶和卡皮斯特拉诺 还是有一个项目可以让我继续下去 我可以推荐两个项目 如果您有一个
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • 如何在 Rails 测试中测试 params 哈希?

    以下内容会生成错误 未定义的局部变量或方法 params assert equal params recipient id users one id 如何测试参数哈希 另外 你如何测试assert redirect当存在参数时 参数附加到
  • 遵循 http://ruby.railstutorial.org/ 教程时出现 RSpec 错误

    我到处搜索但似乎找不到解决方案 我一直在关注有关的教程http ruby railstutorial org http ruby railstutorial org 我在第 3 章中尝试使用 rspec spec 执行测试 但是我不断收到以
  • 在 docker 中将 pgadmin 连接到 postgres

    我有一个docker compose与服务文件python nginx postgres and pgadmin services postgres image postgres 9 6 env file env volumes postg
  • Windows 睡眠功能极慢

    我正在通过 Windows h 使用 Sleep 命令制作一个程序 并且在 Windows 10 而不是 Windows 7 上运行我的程序时遇到了令人沮丧的差异 我将我的程序简化为下面的程序 它与我的更复杂的程序表现出相同的行为 在 Wi
  • 优化 LATERAL join 中的慢速聚合

    在我的 PostgreSQL 9 6 2 数据库中 我有一个查询 该查询根据一些股票数据构建计算字段表 它为表中的每一行计算 1 到 10 年的移动平均窗口 并将其用于周期性调整 具体来说 CAPE CAPB CAPC CAPS 和 CAP
  • Postgres LIMIT/OFFSET 奇怪的行为

    我正在使用 PostgreSQL 9 6 我有一个这样的查询 SELECT anon 1 id AS anon 1 id anon 1 is valid AS anon 1 is valid anon 1 first name AS ano
  • 如何使用表内的 JSONB 数据类型和 PostgreSQL JDBC 驱动程序将 JSON 对象存储到 PostgreSQL 中

    我想将以下 json 对象保存到 PostgreSQL 数据库表中as jsonb fname john lname doe 我当前使用 PGObject 创建对象并将类型设置为 jsonb 并将值作为 json 字符串传递 寻找更好的 m
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • Ruby on Rails:如何使用 TCP 套接字连接 GPS 设备

    ruby 2 3 0p0 2015 12 25 修订版 53290 x86 64 linux 轨道 4 2 4 我正在使用 cloud9 IDE 和 webrick 服务器 我的项目是实时跟踪GPS 我想使用TCP连接与GPS跟踪设备进行通
  • (Rails) Assert_Select 的烦人警告

    有谁知道如何让assert select在rake测试期间不输出所有那些讨厌的html警告 你知道 就像这样的东西 ignoring attempt to close body with div opened at byte 1036 li
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • 哪个版本的 Miniconda 具有适用于 Windows 64 位的 Python 3.6?

    我正在开发一个需要这些深度学习库的项目 keras 和 tensorflow 不幸的是 这些不适用于 Python 3 7 有人可以告诉我一个带有 Python 3 6 的 Miniconda 版本 适用于 Windows 64 位 吗 我
  • 如何在 PostgreSQL 中使用条件和子查询创建唯一索引?

    我使用 PGSQL 并尝试添加下面的索引 CREATE UNIQUE INDEX fk client ON user client fk client WHERE fk client NOT IN SELECT fk client FROM
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博

随机推荐

  • CComboBox 下拉时未选择 CurSel

    我在对话框中有一个按字母顺序排序的组合框 该组合包含多个字符串 但有些字符串在不同情况下重复 即我们有一个 开 和一个 开 一个 关 和一个 关 这看起来似乎多余 但这是有原因的 尽管现在这并不重要 重复项显然是一个接一个地出现在列表中 大
  • CSS background-clip:来自父元素背景的文本

    我想得到一个background clip text在子 div 上从父 div 获取其背景 基本上它应该看起来像文本被剪掉了 当背景位于同一元素上时很容易做到 但我似乎无法弄清楚背景何时位于不同的 div 上 background wid
  • 导入我的非托管解决方案不会更改帐户表单

    我在 CRM 中有一个定制的帐户 主 表单 我在其中添加了一个新选项卡 一个新部分和新字段 我事先发布了所有自定义内容 然后导出 然后导入到我的测试环境中 我都是在测试环境下发布的 非托管解决方案包含此表单及其新字段 当我查看导出的 zip
  • 如何制作iOS资源包?

    我在评估的 iOS 项目中看到了一个自定义资源包 所以至少我知道这是可能的 我的问题是 我对给定图像使用大约 22 000 个图块的 CATiledLayer 并且编译需要很长时间 干净构建需要半小时 常规构建需要 5 10 分钟 因此 我
  • HTML 垂直对齐失败?

    我有一个由 2 个文本框组成的简单表单 我只是想让表单出现在页面中间 页面中没有任何额外的元素 通过使用align center 元素确实移动到中心 但情况并非如此vertical align middle
  • Java UI,尝试在单击按钮后转到下一页

    我有一个简单的 GUI 带有 3 个单选按钮和一个按钮 我希望用户选择一个单选选项 然后单击该按钮后 用户将根据他们选择的单选按钮被定向到不同的 Java UI 这是我的方法 private void btnContinueActionPe
  • 在网站上动态生成 SVG 图像是否明智?

    我刚刚学习 SVG 它看起来很棒 但我不确定浏览器支持 人们是否成功解决了这个问题 还是还为时过早 Raphael http raphaeljs com 是一个跨浏览器矢量图形库 可能值得一看
  • 将 Kotlin + Java 与 Maven 混合,未解决的参考

    我有一个带有 Kotlin 代码的 Maven 项目hello kt它调用 Java 代码JavaFoo java调用 Kotlin 代码KotlinFoo kt hello kt还打电话KotlinFoo kt直接地 我正在尝试用mvn
  • 如何在CUBLAS中计算复数幂?

    我正在将我的 C 代码移植到 CUDA 和 CUBLAS 我使用 stl complex 进行复杂计算 即 pow log exp 等 但我没有看到 CuComplex 库中定义的相同函数 我不知道如何创建这些功能 但我在网上找到了一些代码
  • Ember CLI 应用程序中基于环境的主机

    我正在尝试在 Ember CLI 应用程序中配置适配器 以根据环境使用不同的主机 在开发中 我希望它成为默认的当前主机 让我通过 proxy选项 但在生产中我知道它会是http some url 我尝试导入我的ENV进入我的应用程序适配器
  • 具有两种文本对齐方式的属性文本

    有谁知道如何在一个字符串中实现两种不同的文本对齐方式 这就是我想要 textView 显示的内容 label value My code let txtView cell viewWithTag 77 as UITextView let l
  • android:fontFamily 需要 api 级别 16,但文档说级别 15 可以吗?

    如何在 API 级别 15 上设置字体系列 文档说 API 15does有 fontFamily 属性 我希望文档会说 这在 API 级别 15 中已弃用 对于 API 级别 15 及更低级别 请参阅 但他们没有 如何在 XML 中 或以编
  • System.TypeLoadException:“Xamarin.Forms.Forms+AndroidPlatformServices 类型的 VTable 设置失败”

    我是 Xamarin 新手 目前我必须对现有应用程序之一进行一些更改 但是当我尝试加载项目时 最初出现了很多与版本代码相关的错误 我以某种方式设法克服了这些错误 但我对这个错误感到震惊 System TypeLoadException VT
  • 添加事件监听器的多个功能

    没有jquery 嘿 我正在尝试向按钮添加多个添加事件侦听器 function logoContame var logo document getElementById logoheader logo addEventListener cl
  • 在Python中将列表的列表转换为字典的字典

    我正在尝试将列表数据结构的列表转换为字典的字典 该列表定义如下 l PP Ear rings Holesovice 2000 PP Skirts Holesovice 1000 PP Dresses E shop 1500 BM Butte
  • 连接周期以获得时间序列,同时针对不同的起点

    我有以下示例数据 library data table set seed 42 t lt data table time 1 1000 period round runif 100 1 5 p lt data table id 1 10 c
  • 有没有办法以编程方式请求许可?

    有什么方法可以在android中以编程方式请求许可吗 我不想将所有权限添加到 AndroidManifest xml 那么有没有在运行时请求权限的对话框呢 应用程序静态声明它们所需的权限 Android系统在安装应用程序时提示用户同意 An
  • 使用handlebars js的分页功能

    DEMO https codepen io syedazam project editor XYeJoa 0 我正在使用handlebars js 开发分页功能并从JSON 中获取数据 前 5 个结果将在页面加载时显示 单击下一页时 将显示
  • 如何使用 Bootstrap 3 网格系统设计自定义网格?

    使用 Bootstrap 3 框架是否可以实现如下图所示的网格设计 Note 块是图像 我试过这里是example http bit ly 1mR7yh1 div class container div class row div clas
  • 在 Windows 上安装 Postgres 以与 Ruby-on-Rails 一起使用

    目前我收到以下错误 PGError 致命 用户 postgres 的密码身份验证失败 当我的应用程序尝试访问数据库时 我想测试我对 postgres 的 SQL 调用 因为我的应用程序在 Heroku 上投入生产时会定期中断 因为 post