【问题标题】:Why can't I migrate my postgres database in windows?为什么我不能在 windows 中迁移我的 postgres 数据库?
【发布时间】:2018-03-01 05:30:27
【问题描述】:

我将我的数据库从 sqlite 切换到 postgres 以便在 heroku 上进行部署。当我这样做并尝试运行 heroku run rake db:migrate -a 时,我看到了这个错误: ActiveRecord::StatementInvalid: PG::DatatypeMismatch: 错误:列“pay_date”不能自动转换为日期类型提示:您可能需要指定“USING pay_date::date”。 : ALTER TABLE "recurring_payments" ALTER COLUMN "pay_date" TYPE 日期 所以我创建了一个迁移来解决这个问题,但是当我运行 rake db:migrate 来运行迁移时,我看到了这个错误:

PG::ConnectionBad: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

但是,当我检查我的服务时,我发现它正在运行,并且它被配置为侦听端口 5432。还有什么可能导致此问题?

另外,如果我将此行添加到 database.yml:

  host: localhost 

错误变成这样:

PG::ConnectionBad: could not translate host name "localhost" to address: Name or service not known 

也许这更有希望?

【问题讨论】:

  • 定义“迁移”。你在做什么?
  • 令我印象深刻的是,您不太可能在 Windows 安装的 PostgreSQL 上侦听具有 unix 路径的 unix 套接字。您尝试过连接到 localhost,是吗?
  • “在 Windows 中迁移”并不能很好地描述您在做什么。您的意思是从一台 Windows 机器迁移到另一台机器吗?从 Linux 到 Windows? Windows 到 Linux?还有什么?你在哪里输入什么命令?
  • 我将数据库从 sqlite 切换到 postgres 以部署在 heroku 上。当我这样做并尝试运行 heroku run rake db:migrate -a 我看到了这个错误: ActiveRecord::StatementInvalid: PG::DatatypeMismatch: ERROR: column "pay_date" cannot be cast automatically to type date 提示:你可能需要指定“使用 pay_date::date”。 : ALTER TABLE "recurring_payments" ALTER COLUMN "pay_date" TYPE 日期。所以我创建了一个迁移来解决这个问题,但是当我运行 rake db:migrate 来运行迁移时,我看到了问题中提到的错误
  • 不要评论您自己的问题,而是编辑您的问题以改进它。您确定要在 Windows 系统上执行此操作吗?大多数服务器都在运行 Linux,而您问题中的错误消息闻起来像 Linux 一个

标签: ruby-on-rails windows postgresql


【解决方案1】:

您似乎有多个问题:

默认情况下,Rails 使用 Unix 套接字连接到 PostgreSQL。因此是原始错误消息。

添加 host 键将 Rails 切换到 TCP/IP 连接,这正是您在 Windows 中想要的。

现在您似乎遇到了另一个问题:localhost 无法解析为 IP 地址,这表明您的 Windows 机器上存在与 Rails 或 PostgreSQL 无关的一般配置问题。

检查您的 hosts 文件是否混乱,或者您的(个人)防火墙是否阻止了 Rails 或 PostgreSQL。尝试运行ping localhost

如果所有其他方法都失败,请尝试改用 host: 127.0.0.1

【讨论】:

  • 当我运行 ping localhost 时,我得到了 4 次成功的传输,我认为这是应该发生的。但是,我仍然得到与主机名相同的错误。如果我将主机名更改为 127.0.0.1,我会收到以下错误:PG::ConnectionBad: 无法连接到服务器:连接被拒绝服务器是否在主机“127.0.0.1”上运行并接受端口 5432 上的 TCP/IP 连接?
  • 如果我运行netstat -ano,我可以看到有一个进程在监听5432端口
  • 尝试 ::1 而不是 127.0.0.1 它是 localhost 的 ip6。 a 不要进行所有确认您的 postgresql 服务器正在运行的测试。
猜你喜欢
  • 2017-10-08
  • 2020-05-20
  • 1970-01-01
  • 2015-05-03
  • 2019-08-27
  • 1970-01-01
  • 2021-06-09
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多