существует - создание базы данных postgresql windows




psql: FATAL: база данных «<пользователь>» не существует (12)

Я использую приложение PostgreSql для mac ( http://postgresapp.com/ ). Я использовал его в прошлом на других машинах, но это приносит мне некоторую проблему при установке на моем macbook. Я установил приложение, и я запустил:

psql -h localhost

Он возвращает:

psql: FATAL:  database "<user>" does not exist

Кажется, я даже не могу запустить консоль для создания базы данных, которую она пытается найти. То же самое происходит, когда я просто запускаю:

psql 

или если я запустил psql из выпадающего меню приложения:

Статистика машины:

  • OSX 10.8.4

  • psql (PostgreSQL) 9.2.4

Любая помощь приветствуется.

Я также попытался установить PostgreSql через homebrew, и я получаю ту же проблему. Я также прочитал страницу документации по приложениям, в которой говорится:

Когда Postgres.app сначала запускается, он создает базу данных USER, которая является базой данных по умолчанию для psql, когда ни один не указан. Пользователь по умолчанию - USER, без пароля.

Таким образом, казалось бы, приложение не создает $ USER, но я установил-> uninstalled-reinstalled несколько раз, так что это должно быть что-то с моей машиной.

Я нашел ответ, но я не уверен точно, как он работает как пользователь, который ответил на этот поток -> Получение Postgresql Running In Mac: База данных «postgres» не существует , не отслеживается. Я использовал следующую команду, чтобы открыть psql:

psql -d template1

Я оставлю этого без ответа, пока кто-нибудь не сможет объяснить, почему это работает.


  1. Войти как пользователь по умолчанию: sudo -i -u postgres
  2. Создать нового пользователя: createuser --interactive
  3. При запросе имени роли введите имя пользователя linux и выберите «Да» для ответа на вопрос суперпользователя.
  4. Все еще вошли в систему как пользователь postgres, создайте базу данных: createdb <username_from_step_3>
  5. Подтвердите, что ошибки (-и) исчезли, введя: psql в командной строке.
  6. Вывод должен показывать psql (xxx) Type "help" for help.

В этом простое объяснение; это проблема noob. Просто набрав

pgres

приведет к этому ответу.

pgres <db_name> 

будет успешным без ошибок, если у пользователя есть разрешения на доступ к db.

Можно вдаваться в детали экспортируемых переменных среды, но это необязательно. Это слишком просто, чтобы сбой по любой другой причине.


Вход в систему с использованием базы данных template1 по умолчанию:

#psql -d template1
#template1=# \l

  List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(3 rows)

Создайте базу данных с помощью userId:

template1=# CREATE DATABASE gogasca WITH OWNER gogasca ENCODING 'UTF8';
CREATE DATABASE

Выйти, а затем снова войти в систему

template1=# \q
gonzo:~ gogasca$ psql -h localhost
psql (9.4.0)
Type "help" for help.

gogasca=# \l
                                List of databases
   Name    |  Owner  | Encoding |   Collate   |    Ctype    |  Access privileges  
-----------+---------+----------+-------------+-------------+---------------------
 gogasca   | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 postgres  | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
 template1 | gogasca | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/gogasca         +
           |         |          |             |             | gogasca=CTc/gogasca
(4 rows)

Если бы та же проблема, простой psql -d postgres сделал это (введите команду в терминал)


Если эта проблема возникла при установке postgresql через homebrew.

Пришлось создать суперпользователя по умолчанию postgres с:

createuser --interactive postgres ответ y для суперпользователя

createuser - интерактивный пользовательский ответ y для суперпользователя


Как указано в документации createdb :

Первая база данных всегда создается командой initdb, когда область хранения данных инициализируется ... Эта база данных называется postgres.

Поэтому, если определенные дистрибутивы OS / postgresql делают это по-другому, это, конечно, не стандарт по умолчанию / стандарт (только что проверено, что initdb на openSUSE 13.1 создает «postgres» базы данных, но не «<user>»). Короче говоря, psql -d postgres как ожидается, будет использоваться при использовании пользователя, отличного от «postgres».

Очевидно, что принятый ответ, выполняемый createdb для создания БД, называемый как пользователь, также работает, но создает избыточную БД.


По умолчанию postgres пытается подключиться к базе данных с тем же именем, что и ваш пользователь. Чтобы предотвратить это поведение по умолчанию, просто укажите пользователя и базу данных:

psql -U Username DatabaseName 

Поскольку этот вопрос является первым в результатах поиска, я все равно поставлю другое решение для другой проблемы, чтобы не дублировать заголовок.

Такое же сообщение об ошибке может возникнуть при запуске файла запроса в psql без указания базы данных. Поскольку в postgresql нет инструкции use , мы должны указать базу данных в командной строке, например:

psql -d db_name -f query_file.sql

У меня все еще была проблема выше, после установки postgresql с помощью homebrew - я разрешил это, поставив / usr / local / bin на мой путь до / usr / bin


Эта ошибка также может возникнуть, если для переменной среды PGDATABASE установлено имя базы данных, которая не существует.

В OSX я увидел следующую ошибку при попытке запустить psql из меню Postgress.app:

psql: FATAL: database "otherdb" does not exist

Решение этой ошибки заключалось в удалении export PGDATABASE=otherdb из ~/.bash_profile :

Кроме того, если для PGUSER установлено значение, отличное от вашего имени пользователя, произойдет следующая ошибка:

psql: FATAL: role "note" does not exist

Решение заключается в удалении export PGUSER=notme из ~/.bash_profile .


Я столкнулся с такой же ошибкой, когда пытался открыть postgresql на mac

psql: FATAL:  database "user" does not exist

Я нашел эту простую команду для ее решения:

method1

$ createdb --owner=postgres --encoding=utf8 user

и тип

 psql

Способ 2:

psql -d postgres

возникла проблема с использованием драйвера JDBC, поэтому просто нужно добавить базу данных (возможно, избыточно в зависимости от инструмента, который вы можете использовать) после имени хоста в URL-адресе, например jdbc:postgres://<host(:port)>/<db-name>

более подробная информация приведена здесь: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT







psql