powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
7 сообщений из 7, страница 1 из 1
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32499230
Init_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32499299
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программа должна работать с базой. А создаваться база должна во время установки/развертывания приложения. Вместе с пользователями, последовательностями, таблицами и другими объектами.


Это мое личное мнение.
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32499330
Init_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если во время работы с базой она была олностью повреждена? Нет, как восстанавливать данные я знаю, а вот делать ли, грубо говоря, CREATE_DB ?
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32499359
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Восстановить из дампа, в смысле? Тогда нужно создать, конечно.
Снова обратимся к документации.

PostgreSQL Documentation
22.1.1. Restoring the dump
The text files created by pg_dump are intended to be read in by the psql program. The general command form to restore a dump is

psql dbname < infile
where infile is what you used as outfile for the pg_dump command. The database dbname will not be created by this command, you must create it yourself from template0 before executing psql (e.g., with createdb -T template0 dbname). psql supports similar options to pg_dump for controlling the database server location and the user name. See its reference page for more information.

If the objects in the original database were owned by different users, then the dump will instruct psql to connect as each affected user in turn and then create the relevant objects. This way the original ownership is preserved. This also means, however, that all these users must already exist, and furthermore that you must be allowed to connect as each of them. It might therefore be necessary to temporarily relax the client authentication settings.

Once restored, it is wise to run ANALYZE on each database so the optimizer has useful statistics. You can also run vacuumdb -a -z to ANALYZE all databases.
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32499947
Init_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну как может убиться база так, чтобы не просто данных, а даже ее имени на сервере не осталось? Вот сижу и ломаю голову, предоставить ли пользователю возможность создания базы или оставить только восстановление данных (pg_dump), подразумевая, что сама база находится на сервере.
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32500134
Заглянул
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Init_s:
Если что-то создавалось в базе template1, то в процессе восстановления могут появиться ошибки, связанные с попыткой повторного определения объекта. Вот пример.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
dbtest=> create database test;
CREATE DATABASE
dbtest=> \q
bash- 2 .05b$ pg_dump test >test.out
bash- 2 .05b$ psql -d test -f test.out
You are now connected as new user postgres.
SET
psql:test.out: 16 : ERROR:  function plpgsql_call_handler already exists with same argument types
psql:test.out: 24 : ERROR:  Language plpgsql already exists
bash- 2 .05b$ psql template1
Welcome to psql  7 . 3 . 4 -RH, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit

template1=# drop database test;
DROP DATABASE
template1=# create database test with template template0;
CREATE DATABASE
template1=# \q
bash- 2 .05b$ psql -d test -f test.out
You are now connected as new user postgres.
SET
CREATE FUNCTION
CREATE LANGUAGE

Я создал plpgsql в базе template1, для удобства, чтобы каждый раз не создавать в новой БД, поэтому появились ошибки при восстановлении.
Можете у себя проделать подобный тест.
...
Рейтинг: 0 / 0
Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
    #32502293
Init_s
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видимо все-таки придется делать dropdb b createdb, а потом уже восстанавливать из pg_dump'а . А так не хотелось бы этого делать :(( Спасибо за тест!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Если программа работает с базой должна ли она(программа) создавать базу в случае, если базы с таким названием не существует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]