用Play框架使用PostgreSQL

9

我正在尝试使用Postgresql和Play进行Yabe教程,但出现以下错误:

无法连接到数据库,找不到驱动程序(org.postgresql.Driver)

这是我的连接字符串:

# If you need a full JDBC configuration use the following :
 db.url=jdbc:postgresql:yabe
 db.driver=org.postgresql.Driver  
 db.user=yabe
 db.pass=yabe
#
# Connections pool configuration :
 db.pool.timeout=1000
 db.pool.maxSize=30
 db.pool.minSize=1

在我的lib文件夹中,我有这个: postgresql-9.1-901.jdbc3.jar 我尝试将驱动程序名称更改为与jar文件相同的名称,但仍然收到相同的错误。 有任何想法吗?

1
你检查过 org.postgresql.Driver 是否在 Jar 包中了吗? - niels
嗨Niels。我没有。我从Postgresql下载了驱动程序。我会检查你建议的内容。 - Todd
我在.yml文件中添加了一个依赖项,它成功下载了.jar文件。然而,我仍然遇到了这个错误。发生了数据库错误:无法连接到数据库,找不到驱动程序(postgresql-9.0-801.jdbc4.jar)。 - Todd
请直接查看jar文件以确认。 - niels
这是JAR包中的内容。http://repo1.maven.org/maven2/postgresql/postgresql/9.0-801.jdbc4/ - Todd
5个回答

40

如果你正在使用Play 2.0,那么这种方法略有不同。实际上,URL看起来像这样:

db.default.driver=org.postgresql.Driver
db.default.url="postgres://user:password@servername/dataBaseName"

但是如果您没有在build.scala或build.java的依赖项部分中添加以下行,则这也将出错:

"postgresql" % "postgresql" % "9.1-901.jdbc4"

13

如果您需要 SSL 支持:

db=postgres://user:password@server.example.net:5432/dbname?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

10

Play框架已经包含了PostgreSQL驱动程序。请按照以下步骤操作:

  • 从您的dependencies.yml文件中删除任何与postgreSQL驱动程序有关的引用
  • 运行"play deps --sync"命令
  • 从您的lib/文件夹中删除与postgreSQL驱动程序相关的任何jar文件
  • 将您的连接字符串更改为:

    db=postgres://user:pwd@localhost:5432/yabe

这样应该解决您所遇到的冲突。


7
Play 2并非如此。 - Mike Slinn
1
@MikeSlinn 是的,这是一个关于 Play 1 的问题 :) - Pere Villega

6

您不需要编辑完整的JDBC配置。我在本地使用postgresql,只需在conf文件夹中的application.conf文件中添加此行:

# To connect to a local PostgreSQL9 database, use:
db=postgres://userName:yourPassword@localhost:5432/nameOfYourDB

如果您在本地,则用户名通常为postgres,除非您更改了它。

我尝试了你建议的方法,但是出现了以下错误:发生了JPA错误(无法启动未正确配置的数据库的JPA管理器):没有配置数据源。 - Todd

3
你需要复制PostgresSql驱动程序版本“JDBC 4”[你拥有的是JDBC 3]。从这里获取它。
或者,您可以在依赖项中使用- postgresql 9.1-901.jdbc4。但我认为Maven还没有这个最新版本。

1
复制?依赖难道不会自动下载吗? - Todd
如果Maven中央仓库中有该jar包,依赖项将会自动下载。但正如我所说,这个最新版本目前还没有发布。http://mvnrepository.com/artifact/postgresql/postgresql - sojin
无论我拉下哪个版本,都会出现错误。这是我的设置:application.conf db.url=jdbc:postgresql:yabe db.driver=postgresql-9.0-801.jdbc4.jar db.user=yabe db.pass=passworddependancies.yml require: - play - postgresql -> postgresql 9.0-801.jdbc4错误信息: 数据库错误:无法连接到数据库,找不到驱动程序(postgresql-9.0-801.jdbc4.jar)我做错了什么? - Todd
libraryDependencies += "postgresql" % "postgresql" % "9.1-901.jdbc4" - kdazzle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接