Играть! framework - Не удается подключиться к базе данных

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

Не удается подключиться к базе данных [по умолчанию]

это конфигурация базы данных. Я убежден, что это не опечатка (ошибка с толстым пальцем):

db.default.url="postgres://localhost:5432/myproject/"
db.default.user="postgres"
db.default.pass="mypassword"
db.default.driver="org.postgresql.Driver"
db.default.initSQL="SELECT 1" 

в чем проблема? с помощью pgAdmin я могу легко подключиться
p.s.
Я использую Ubuntu. Я заметил, что для смены пользователя postgres
я должен использовать "su", иначе не удастся изменить текущего пользователя.
это как-то связано с игрой! не удалось подключить мою БД?

Спасибо


person socksocket    schedule 02.08.2012    source источник
comment
Вы добавили драйвер Postgres JDBC в качестве зависимости Play?   -  person ndeverge    schedule 02.08.2012
comment
да, я сделал: val appDependencies = Seq( postgresql % postgresql % 9.1-901-1.jdbc4 )   -  person socksocket    schedule 03.08.2012


Ответы (3)


В вашей настройке могут быть две неправильные или, по крайней мере, сомнительные вещи.

Во-первых: синтаксис URL-адреса postgres:... не является простым URL-адресом JDBC. Этот формат не понимается драйвером JDBC PostgreSQL. См. этот ответ на аналогичную проблему.

Во-вторых: вы пытаетесь использовать учетную запись суперпользователя PostgreSQL для Play. Учетная запись суперпользователя должна использоваться только для административной работы, но не для "нормальной" работы. Особенно не для работы, предполагающей публичный доступ к БД через какой-либо веб-интерфейс. Любая атака SQL-Injection дает злоумышленнику золотой ключ к вашей базе данных, включая ядерную бомбу, чтобы сразу разрушить весь ваш кластер БД или установить какой-либо бэкдор на ваш сервер БД.

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

При этом: пароль по умолчанию для пользователя postgres не установлен в Ubuntu. Эта настройка позволяет войти в систему под пользователем БД только от того же пользователя ОС. Как это исправить, объясняется в этом ответе.

Если эти два совета не помогли: Приведенная вами ошибка очень расплывчата. Должны быть более подробные журналы ошибок где-то. Пожалуйста, найдите их и прикрепите к своему вопросу с помощью кнопки "редактировать".

person A.H.    schedule 03.08.2012
comment
но я установил пароль для пользователя postgres, как я уже упоминал. Я даже могу войти в систему с помощью pgAdmin. что касается синтаксиса. вот что за пьеса! говорится в документах фреймворка. - person socksocket; 03.08.2012
comment
@socksocket: Вы пробовали первую часть? - person A.H.; 03.08.2012
comment
ой пропустил. Я попробую в этот самый момент - person socksocket; 03.08.2012
comment
@socksocket, в чем именно заключалась ваша проблема и как вы ее решили? Я вижу ту же ошибку в моем приложении Play 2.0 на Heroku. - person Jay Taylor; 06.08.2012
comment
@JayTaylor: я предполагаю, что он использовал ссылку в первой... части. - person A.H.; 06.08.2012

Это не ответ непосредственно на ваш вопрос, но у меня было такое же сообщение об ошибке, и я пришел сюда через Google. Используя Scala Play 2.3, у меня было

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://127.0.0.1:5432/noob_development"
db.default.logStatements=true

который должен был быть

db.default.driver="org.postgresql.Driver"
db.default.url="jdbc:postgresql://127.0.0.1:5432/noob_development"
db.default.logStatements=true

Я случайно оставил кавычки вокруг имени водителя. Теперь он работает отлично.

person Neal    schedule 12.08.2014

вот моя конфа, работает:

db.default.url="jdbc:postgresql://127.0.0.1:5432/dbname"
db.default.driver="org.postgresql.Driver"

просто добавьте jdbc: перед postgresql в db.default.url.

person xring    schedule 28.05.2015