在 heroku postgres 上创建表

Create tables on heroku postgres

我正在尝试将我的 Rest Api 部署到 heroku。这个 API 使用 postgres 作为数据库,所以我也需要部署它。所以,我去了 heroku 站点,创建了应用程序,添加了特定的 postgres 数据库。此时,我需要在数据库中创建tables。所以,我打开了终端,写了下面的命令,连接到数据库

psql --host=[HOSTNAME] --port=5432 --username=[USERNAME] --password --dbname=[DBNAME]

然后,我输入了给定的密码,此时我能够进入数据库,因为 \dt 命令显示没有任何关系。此时我需要创建我的数据库和 tables,所以我试着写 CREATE DATABASE db;,但它给了我以下错误:ERROR: permission denied to create database。这应该是因为我不是高权限用户,但我无法更改它,即使我花了很多时间在 youtube 和其他 Whosebug 问题中搜索解决方案。

因此,我找到了另一种可能的解决方案,即在 CMD 中输入以下代码: heroku pg:psql --app mad4feltre < database.sql,应该将 SQL 文件中的所有代码都放入数据库中,但是由于 < 字符,终端给出了一个错误,留待将来使用。这是错误本身:

+ heroku pg:psql --app mad4feltre < database.sql
+                                 ~
Operator'<' reserved for future uses.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported

我想知道如何在我的 postgres 数据库中插入数据库和 table。如果这两种可能性中的一种能够得到解决,那就太好了。

这是我关注最多的视频和 post:

https://www.youtube.com/watch?v=80oty2v4HsE

createdb: database creation failed: ERROR: permission denied to create database

感谢您的宝贵时间

这里有两件事在起作用:

  • 首先,您不能在 Heroku 上使用 PostgreSQL 命令创建数据库。

    但这没关系:当您配置 Heroku Postgres add-on 时,Heroku 会为您创建一个数据库。您已经通过 --dbname=[DBNAME] 参数连接到它。

    连接后,您可以立即开始 运行 查询。

  • 您似乎在使用 PowerShell。 Heroku 的大部分文档使用的 Unix-style shell 命令可能不适用于 PowerShell。

    在这种情况下,该命令试图使用 database.sql 文件的内容作为 heroku pg:psql 命令的标准输入。 PowerShell 上的 works a bit differently

    试试这个:

    Get-Content database.sql | heroku pg:psql --app mad4feltre