播放框架 - SQLite:启用外键
Posted
技术标签:
【中文标题】播放框架 - SQLite:启用外键【英文标题】:play framework - SQLite: Enable Foreign Key 【发布时间】:2014-09-09 09:18:19 【问题描述】:我在玩游戏时遇到问题,SQLite 文档说foreign keys are disabled by default, and need to be enabled with each connection。
我在 Ebean 中使用 SQLite,在进化中我添加了这一行:
PRAGMA foreign_keys = ON;
但它不起作用,它仅在我从终端或 SQLite 客户端打开连接并执行该行 (PRAGMA foreign_keys = ON;
) 时起作用,我也在应用程序的开头尝试了这个,但没有运气:
Ebean.getServer("mom").createSqlUpdate("PRAGMA foreign_keys = ON;").execute();
那么,如何启用外键呢?
【问题讨论】:
【参考方案1】:您不能通过进化来做到这一点,因为PRAGMA
与连接相关联,而不是与数据库相关联。
由于类似的原因,在启动时调用 SQL 将不起作用:它只会为您运行查询的池中的连接启用PRAGMA
。
您需要为正在使用的每个连接执行此操作。
根据the JDBC documentation of Play Framework,可以通过配置连接池为application.conf
文件中的每个新连接执行PRAGMA
来实现:
db.default.initSQL="PRAGMA foreign_keys = true"
您可以将连接/服务器名称 default
替换为 mom
或您配置 JDBC 连接的方式。
【讨论】:
嗨,对我来说这是行不通的。你能告诉我我错了吗?我的 app.conf 是 db sqlite slick.driver = "scala.slick.driver.SQLiteDriver$" driver = "org.sqlite.JDBC" url = "jdbc:sqlite:./test.db" connectionPool = disabled initSQL = "PRAGMA foreign_keys = ON" db.sqlite.initSQL="PRAGMA foreign_keys = true"以上是关于播放框架 - SQLite:启用外键的主要内容,如果未能解决你的问题,请参考以下文章