Ошибка Serverpod sql при запуске чистого проекта

Я создал новый проект serverpod и запустил докер-контейнеры для базы данных и Redis. Но когда я запускаю сервер, я получаю следующую ошибку:

Failed to connect to the database. Retrying in 10 seconds. PostgreSQLSeverity.error 42P01: relation "serverpod_runtime_settings" does not exist

Я попробовал выполнить шаги по началу работы здесь: https://docs.serverpod.dev/ , но все еще сталкиваюсь с этой проблемой.

3 ответа

В документации это неясно, но 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

<имя_контейнера > обычноyour_project_server-postgresно вы можете найти точное имя, запустив$ docker psпри условии, что контейнер запущен. Если нет, начните сначала с$ docker-compose up --build --detach.

<db_name> обычно совпадает сproject_nameно для сервера разработки имя определяется внутри этого файла:


Что здесь происходит? Вам нужно создать таблицы базы данных, код для этого уже поставляется с serverpod, и все, что вам нужно сделать, это запустить его в своей базе данных!

Вы можете найти код sql по этому пути:your_project/your_project_server/generated/tables-serverpod.pgsql

Приведенная выше команда сначала скопирует файл pgsql в работающий Docker-контейнер, а затем с помощью второй команды вы выполняете код sql в базе данных! Это означает, что вы создадите все необходимые таблицы. К вашему сведению, вы можете использовать этот же метод при настройке любых модулей serverpod, таких как severpod_auth, поскольку они также поставляются с набором таблиц базы данных, см. документацию по этому вопросу здесь: https://docs.serverpod.dev/concepts/modules.


Также можно использовать инструмент с графическим интерфейсом, например https://www.pgadmin.org/ или https://eggerapps.at/postico2/. Чтобы затем подключиться к базе данных, вы можете найти имя пользователя и пароль внутри этих файлов:your_project/your_project_server/config/development.yamlиyour_project/your_project_server/config/passwords.yamlиспользуя localhost:8090 в качестве адреса (это значение по умолчанию). Затем скопируйте и вставьте код из файла pgsql в окно, где вы можете выполнить код sql, а затем выполните его.

Шаг 1. Выведите список изображений в докере.

      // for Linux [if you got permission error use sudo]
    $docker ps  
    

Шаг 2. Выполните следующую команду и замените имя контейнера идентификатором контейнера.

// В имени контейнера необходимо заменить идентификатор контейнера

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

  

Шаг 3. Замените идентификатор контейнера и имя базы данных и выполните следующий код.

        // here you need to replace with postgres image container id
  $ docker exec -u postgres <container_name> psql <db_name> postgres -f docker-entrypoint-initdb.d/tables-serverpod.pgsql

Шаг 4: Затем запустите

      $dart run bin/main.dart

Я сделал то же самое, создав проект flutter serverpod. когда я запускаю свой проект на другом Mac(не на хосте). Раньше это выдавало мне ошибку, как вы упомянули выше. но затем я генерирую базовые настройки serverpod, как предложено в ответе выше. проблема теперь в том, что я также создал таблицу USER на хост-Mac с 3-4 записями пользователей. теперь я вообще не вижу пользовательскую таблицу при использовании проекта на другом Mac. Итак, как мне запустить весь проект flutter serverpod с записями и всем остальным удаленно через разные Mac.

Другие вопросы по тегам