Skip to main content
 首页 » 编程设计

sqlite之玩框架 H2 db evolutions 与 sqlite/mysql 兼容

2025年05月04日100JustinYoung

到目前为止,我一直在内存数据库中使用 play 框架的默认 SQL 生成和 H2。是否有任何其他数据库与这些 SQL 脚本完全兼容? 我喜欢 SQL 的自动生成,因为我仍处于开发阶段,但我想与它一起使用持久性数据库。我有哪些选择?

我简单地尝试了 sqlite,但存在一些不兼容问题,例如 AUTOINCREMENT、约束等。

请您参考如下方法:

有两个不错的选择,选择属于你:

  1. 对于开发,最好选择您打算在生产中使用的相同数据库引擎,MySQL 或 Postgres 是非常典型的选择,因为它们在许多环境中都可用并且是开源的。 Play 将为它们生成正确的 DDL。你也可以……
  2. 使用存储在文件中而不是内存中的 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 性能提升,并且无需运行服务器。