Я использую приложение 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, однако я установил-> деинсталлировал-переустановил несколько раз, так что это должно быть что-то с моей машиной.
Я нашел ответ, но я не уверен, как именно он работает, поскольку пользователь, ответивший в этой теме -> Запуск Postgresql в Mac: база данных "postgres" не существует , не проследила. Я использовал следующую команду, чтобы открыть psql:
psql -d template1
Я оставлю этот вопрос без ответа, пока кто-нибудь не сможет объяснить, почему это работает.
источник
psql -d postgres -U postgres -h localhost
показывает? Без флагов это по умолчанию для пользователя CLI, и я бы сказал, что это по умолчанию для "postgres" admin db, но у меня нет mac для тестирования.createdb <user>
сработала для меня.psql -U user -d postgres
, это гарантирует, что пользователь подключен к базе данных postgres, которая уже существует. Поэтому мы должны передать базу данных также во время входа в систему.Ответы:
Похоже, что вашему менеджеру пакетов не удалось создать для вас базу данных с именем $ user. Причина того, что
у вас работает то, что template1 - это база данных, созданная самим postgres и присутствующая во всех установках. По-видимому, вы можете войти в template1, поэтому вам должны быть предоставлены некоторые права в базе данных. Попробуйте это в командной строке:
а затем посмотреть, если вы можете войти снова с
Это просто создаст базу данных для вашего логина, что, я думаю, именно то, что вы ищете. Если созданный файл не работает, у вас недостаточно прав для создания собственной базы данных, и вам придется выяснить, как исправить пакет homebrew.
источник
$ createdb -h localhost
чтобы решить ошибкуcould not connect to database postgres: could not connect to server
. После этого я могу подключиться к консоли postgresql черезpsql -h localhost
.-d template1
ваша первая команда? Я видел "template1" в учебных пособиях по всему Интернету, но он только вводит меня в заблуждение. На мой взгляд, более логичный подход: 1) создать пользователя PostgreSQL, например, «usera» 2) создать базу данных с тем же именем, что и пользователь «usera» (я думаю, что это безумие, но, похоже, PostgreSQL этого требует) 3) Войдите в PostgreSQL как суперпользователь "postgres" и назначьте привилегии базы данных "usera" пользователю "usera" (о боже, это действительно настоящая жизнь?)Из терминала просто запустите команду в окне командной строки. (Не внутри PSQL) .
А затем снова попробуйте запустить postgres.
источник
createdb
По умолчанию postgres пытается подключиться к базе данных с тем же именем, что и ваш пользователь. Чтобы предотвратить это поведение по умолчанию, просто укажите пользователя и базу данных:
источник
psql -U Username -f create_db.sql
это вернет ошибку:database Username doesn't exists
psql -U Username postgres
когда у вас еще нет баз данныхsudo -i -u postgres
createuser --interactive
createdb <username_from_step_3>
psql
в командной строке.psql (x.x.x) Type "help" for help.
источник
Войдите в систему, используя базу данных template1 по умолчанию:
Создайте базу данных с вашим userId:
Выйдите и войдите снова
источник
Я столкнулся с той же ошибкой при попытке открыть postgresql на Mac
Я нашел эту простую команду, чтобы решить ее:
method1
и введите
Способ 2:
источник
Была такая же проблема, просто
psql -d postgres
сделал это (введите команду в терминале)источник
Эта ошибка также может возникать, если для переменной среды 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
.источник
После установки postgres, в моем случае версия 12.2, я выполнил команду ниже
createdb
.источник
Поскольку этот вопрос является первым в результатах поиска, я в любом случае поставлю другое решение для другой проблемы, чтобы не иметь дублирующего названия.
Такое же сообщение об ошибке может появиться при запуске файла запроса
psql
без указания базы данных. Посколькуuse
в postgresql нет операторов, мы должны указать базу данных в командной строке, например:источник
Как указано в документации createb :
Таким образом, если некоторые дистрибутивы OS / postgresql делают это по-другому, это, конечно, не стандарт / стандарт (просто проверено, что
initdb
в openSUSE 13.1 создается БД «postgres», но не «<пользователь>»). Короче говоря,psql -d postgres
ожидается, что будет использоваться при использовании пользователя, кроме "postgres".Очевидно, что принятый ответ, работающий
createdb
над созданием БД с именем пользователя, также работает, но создает лишнюю БД.источник
возникла проблема с использованием драйвера JDBC, поэтому нужно просто добавить базу данных (возможно, избыточно в зависимости от используемого вами инструмента) после имени хоста в URL, например
jdbc:postgres://<host(:port)>/<db-name>
дальнейшие подробности описаны здесь: http://www.postgresql.org/docs/7.4/static/jdbc-use.html#JDBC-CONNECT
источник
Подключитесь к postgres через существующего суперпользователя.
Создайте базу данных по имени пользователя, через которого вы подключаетесь к postgres.
Теперь попробуйте подключиться через имя пользователя
источник
Попробуйте использовать-
psql -d postgres
Я также столкнулся с той же проблемой, когда я побежал
psql
источник
Во-первых, полезно создать базу данных с именем, совпадающим с вашим текущим использованием, чтобы предотвратить ошибку, когда вы просто хотите использовать базу данных по умолчанию и создавать новые таблицы без явного объявления имени базы данных.
Замените "skynotify" на ваше имя пользователя:
-d явно объявляет, какую базу данных использовать по умолчанию для операторов SQL, которые явно не включают имя БД во время этого интерактивного сеанса.
Основы для получения четкого изображения того, что ваш сервер PostgresQL имеет в нем.
Вы должны подключиться к существующей базе данных, чтобы использовать psql в интерактивном режиме. К счастью, вы можете запросить у psql список баз данных:
,
Это НЕ запускает интерактивную консоль, она просто выводит текстовую таблицу на терминал.
Как говорится в другом ответе, postgres всегда создается, поэтому вы должны использовать его в качестве отказоустойчивой базы данных, когда вы просто хотите, чтобы консоль начала работать с другими базами данных. Если его там нет, перечислите базы данных, а затем используйте любую из них.
Аналогичным образом выберите таблицы из базы данных:
Моя база данных "postgres" не имеет таблиц, но любая база данных, которая делает это, будет выводить текстовую таблицу на терминал (стандартное завершение).
И для полноты мы можем выбрать все строки из таблицы:
,
Даже если будет возвращено ноль строк, вы получите имена полей.
Если в ваших таблицах более десятка строк, или вы не уверены, будет полезно начать с подсчета строк, чтобы понять, сколько данных в вашей базе данных:
,
И пусть эта «1 строка» вас не смущает, она просто показывает, сколько строк возвращено запросом, но 1 строка содержит желаемое количество, которое в данном примере равно 0.
ПРИМЕЧАНИЕ. БД, созданная без определения владельца, будет принадлежать текущему пользователю.
источник
Я попробовал некоторые из этих решений, но они не совсем работали (хотя они были очень на правильном пути!)
В итоге моя ошибка была:
когда я выполнил следующую команду:
psql
Итак, я запустил эти две команды:
ПРИМЕЧАНИЕ: это приведет к удалению БД, но мне это не нужно, и по какой-то причине я больше не могу получить доступ к pqsl, поэтому я удалил и воссоздал его. Затем
psql
снова работал.источник
Не уверен, что он уже добавлен в ответах, ответ Анатолия Степанюка был очень полезен:
источник
Возникла эта проблема при установке postgresql через homebrew.
Пришлось создать супер-пользователя по умолчанию "postgres" с:
источник
У меня все еще была проблема выше после установки postgresql с помощью homebrew - я решил ее, добавив / usr / local / bin в мой путь перед / usr / bin
источник
В простейшем объяснении; это нуб проблема. Просто печатать
приведет к этому ответу.
будет успешно без ошибок, если у пользователя есть права доступа к БД.
Можно углубиться в детали экспортируемых переменных среды, но это не нужно ... это слишком просто, чтобы потерпеть неудачу по любой другой причине.
источник
pgres