flutter 启动干净项目时出现ServerPod SQL错误

qfe3c7zg  于 2023-05-08  发布在  Flutter
关注(0)|答案(1)|浏览(246)

我已经创建了一个新的serverpod项目,并为数据库和redis启动了docker容器。但是当我启动服务器时,我得到以下错误:
Failed to connect to the database. Retrying in 10 seconds. PostgreSQLSeverity.error 42P01: relation "serverpod_runtime_settings" does not exist
我尝试了以下的入门步骤:https://docs.serverpod.dev/但仍然遇到这个问题。

klh5stk1

klh5stk11#

文档对此并不清楚,但是serverpod附带了一组数据库表,需要在运行服务器之前对其进行初始化。
从服务器项目运行:

$ docker cp ./generated/tables-serverpod.pgsql <container_name>:/docker-entrypoint-initdb.d/tables-serverpod.pgsql

$ docker exec -u postgres <container_name> psql <db_name> postgres -f docker-entrypoint-initdb.d/tables-serverpod.pgsql

**<container_name> 通常是your_project_server-postgres,但您可以通过运行$ docker ps来找到确切的名称,假设容器正在运行。如果没有,则首先使用$ docker-compose up --build --detach启动。
**<db_name> 通常与project_name相同,但对于开发服务器,名称在此文件中定义:your_project/your_project_server/config/development.yaml

这是怎么回事?您需要创建数据库表,serverpod已经提供了用于此的代码,您所需要做的就是在数据库上运行它!
你可以在这个路径中找到sql代码:your_project/your_project_server/generated/tables-serverpod.pgsql
上面的命令首先将pgsql文件复制到正在运行的docker容器中,然后使用第二个命令在数据库上执行sql代码!这意味着您将创建所需的所有表。作为参考,您可以在设置任何serverpod模块(如severpod_auth)时使用相同的方法,因为它们也带有一组数据库表,请参阅此处的文档:https://docs.serverpod.dev/concepts/modules
也可以使用GUI工具,如https://www.pgadmin.org/https://eggerapps.at/postico2/。然后连接到数据库,您可以在这些文件中找到用户名和密码:your_project/your_project_server/config/development.yamlyour_project/your_project_server/config/passwords.yaml,使用localhost:8090作为地址(这是默认值)。然后将代码从pgsql文件复制粘贴到一个可以执行sql代码的窗口中,然后执行它。

相关问题