播放框架 - 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:启用外键的主要内容,如果未能解决你的问题,请参考以下文章

在 SQLite 中启用外键约束

Laravel 5.1:启用SQLite外键约束

SQLITE 和外键支持

sql Sqlite - 启用外键

如何向现有 SQLite 表添加外键?

SQLite 错误 19:“外键约束失败”