到目前为止,我一直在内存数据库中使用 play 框架的默认 SQL 生成和 H2。是否有任何其他数据库与这些 SQL 脚本完全兼容? 我喜欢 SQL 的自动生成,因为我仍处于开发阶段,但我想与它一起使用持久性数据库。我有哪些选择?
我简单地尝试了 sqlite,但存在一些不兼容问题,例如 AUTOINCREMENT、约束等。
请您参考如下方法:
有两个不错的选择,选择属于你:
- 对于开发,最好选择您打算在生产中使用的相同数据库引擎,MySQL 或 Postgres 是非常典型的选择,因为它们在许多环境中都可用并且是开源的。 Play 将为它们生成正确的 DDL。你也可以……
- 使用存储在文件中而不是内存中的 H2 并使用 TCP 访问它作为示例,在这种情况下它将是持久的,并且您将保留使用 H2 控制台访问 DB 的可能性。
这种情况下的示例连接 URL 是:(~ 是您的主目录,因此它会将 MainDB.h2.db 文件保存在那里)
db.default.url="jdbc:h2:tcp://localhost/~/MainDB"
您需要download H2 package适用于您的平台,并按照 the doc 中所述以服务器模式 运行它.您会在 bin 目录中找到一个 scripts/batch files,或者您可以直接使用命令行来完成。
它还包含 java 包装器,因此您可以在 Windows 中将 H2 服务器作为服务运行,以确保它始终在启动时启动。
最后,在成功的开发阶段之后,如果您要从 TCP 切换到 Embedded 模式,您可以将 DB 文件复制到目标机器并在生产中使用它您将获得著名的 H2 性能提升,并且无需运行服务器。

