2015-04-07 3 views
0

Я не могу настроить свою Play рамочного соединения PostgreSQL с регулярной строкой, как показано ниже:Play рамки PostgreSQL строка подключения

db.default.driver=org.postgresql.Driver 
db.default.url="postgres://localhost:5432/mydb" 

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

Это работает, если изменить URL на:

db.default.url="jdbc:postgresql://localhost:5432/mydb" 

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

Я использую последнюю версию Play (2.3.8) с Java 1.8 и следующий JDBC драйвер:

libraryDependencies += "org.postgresql" % "postgresql" % "9.4-1201-jdbc4" 

Похоже работает, если строка соединения содержит информацию имя пользователя/пароль:

db.default.url="postgres://postgres:[email protected]:5432/mydb" 

Это ограничение или я что-то упускаю?

ответ

1

То, что вы поставили здесь:

db.default.url="postgres://localhost:5432/mydb" 

не является «правильным строка» , но неправильное значение.

Даже если вам удастся найти способ придерживаться его (игра открыта, поэтому никто не может вас остановить), это запутает каждого разработчика, рассматривающего эту настройку, и это включает в себя будущее.

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

my.db.address="localhost:5432/mydb" 
db.default.url="jdbc:postgresql://"${my.db.address} 
my.reusable.key="postgres://"${my.db.address} 

И использовать my.reusable.key, где это необходимо, в то время позволяя db.default.url служить его цели.

Отвечая ваши сомнения по поводу возможных ограничений, я думаю, что вы, возможно, пропустили эту часть документации, которая явно цифры из корректные строки конфигурации: https://www.playframework.com/documentation/2.3.8/SettingsJDBC

+1

На самом деле: Postgres JDBC : // не работает. Это должно быть jdbc: postgresql: //. В любом случае, спасибо. – aguyngueran

+0

Право :) Отредактировал мой ответ. – marvin82

0

вам нужно указать JDBC в передней части URL, чтобы узнать, какой драйвер должен быть загружен, который обрабатывает соединение с базой данных

+0

Но это именно то, что я хотел бы избежать :) – aguyngueran

Смежные вопросы