PG::UndefinedTable: ERROR: relation "pg_range" 不存在

我正在按照此处的指南进行操作:

当我运行 bundle exec rake db:create 时,它会出错并显示:

[Warning] Discourse recommends developing using Ruby v3.1.3 or above. You are using v2.7.6.
PG::UndefinedTable: ERROR: relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
Couldn't create 'discourse_development' database. Please check your configuration.
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'

Caused by:
PG::UndefinedTable: ERROR: relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

我该怎么办?
我正在使用 WSL 2 和 Ubuntu 18.04.5,以及 PostgreSQL 9.2 版本。

那_非常_老了。
您现在应该运行 13.x 版本。

2 个赞

好的,我将尝试升级。

1 个赞

不确定这是否是您问题的根源,但它肯定会 兼容 :slight_smile:

我现在遇到这个错误:

[Warning] Discourse 建议使用 Ruby v3.1.3 或更高版本进行开发。您正在使用 v2.7.6。
PG::UndefinedTable: ERROR:  relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
无法创建 'discourse_development' 数据库。请检查您的配置。
rake aborted!
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR:  relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'

Caused by:
PG::UndefinedTable: ERROR:  relation "pg_range" does not exist
LINE 3: LEFT JOIN pg_range as r ON oid = rngtypid
                  ^
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'
Tasks: TOP => db:create
(通过运行任务 --trace 查看完整跟踪)

根据那个 Stack Overflow 链接,你的数据库要么是旧的,要么是损坏的。

那么,我该如何创建一个新的呢?我以前从未使用过 PostgreSQL。

好吧,现在我遇到了另一个错误:

[警告] Discourse 建议使用 Ruby v3.1.3 或更高版本进行开发。您使用的是 v2.7.6。
我们找不到您的数据库:postgres。可以在位于 config/database.yml 的数据库配置文件中找到。

要解决此问题:

- 您是否为此应用创建了数据库,或者删除了它?您可能需要创建数据库。
- 数据库名称是否已更改?检查您的 database.yml 配置是否具有正确的数据库名称。

要创建数据库,请运行:

        bin/rails db:create
无法创建“discourse_development”数据库。请检查您的配置。
rake aborted!
ActiveRecord::NoDatabaseError: 我们找不到您的数据库:postgres。可以在位于 config/database.yml 的数据库配置文件中找到。

要解决此问题:

- 您是否为此应用创建了数据库,或者删除了它?您可能需要创建数据库。
- 数据库名称是否已更改?检查您的 database.yml 配置是否具有正确的数据库名称。

要创建数据库,请运行:

        bin/rails db:create
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'

Caused by:
PG::ConnectionBad: 连接到套接字“/var/run/postgresql/.s.PGSQL.5432”上的服务器失败:没有那个文件或目录
        服务器是否在本地运行并接受该套接字的连接?
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `load'
/home/joecooldoo/.rbenv/versions/2.7.6/bin/bundle:25:in `<main>'
Tasks: TOP => db:create
(通过运行带有 --trace 的任务查看完整跟踪)

因此,我决定遵循本指南:

在“迁移数据库”消息之后,我遇到了此错误:

Migrating database...
rake aborted!
Discourse::Utils::CommandError: /src/lib/discourse.rb:134:in `exec': mkdir: cannot create directory ‘/src/public/plugins/’: Permission denied
/src/lib/discourse.rb:168:in `execute_command'
/src/lib/discourse.rb:134:in `exec'
/src/lib/discourse.rb:30:in `execute_command'
/src/lib/plugin/instance.rb:727:in `activate!'
/src/lib/discourse.rb:337:in `block in activate_plugins!'
/src/lib/discourse.rb:334:in `each'
/src/lib/discourse.rb:334:in `activate_plugins!'
/src/config/application.rb:216:in `block in <class:Application>'
/src/lib/plugin.rb:6:in `initialization_guard'
/src/config/application.rb:216:in `<class:Application>'
/src/config/application.rb:75:in `<module:Discourse>'
/src/config/application.rb:74:in `<main>'
/home/discourse/.bundle/gems/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/home/discourse/.bundle/gems/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/src/Rakefile:7:in `<main>'
(See full trace by running task with --trace)

我仍然遇到这个问题,有什么解决方案吗?