我在使用SQLite时遇到问题,SQLite文档说foreign keys are disabled by default, and need to be enabled with each connection。
我正在使用SQLite和Ebean,在演变中我添加了这一行:
PRAGMA foreign_keys = ON;
但它不起作用,只有当我从终端或SQLite客户端打开一个连接并执行该行(PRAGMA foreign_keys = ON;
)时它才有效,我也在应用程序的开头尝试了这个但是没有运气:
Ebean.getServer("mom").createSqlUpdate("PRAGMA foreign_keys = ON;").execute();
那么,如何启用外键?
答案 0 :(得分:1)
您不能通过演变来实现这一点,因为PRAGMA
与连接相关联,而不是与数据库相关联。
在启动时调用SQL将不会出于类似的原因:它将仅启用PRAGMA
来自您正在运行查询的池中的连接。
您需要为正在使用的每个连接执行此操作。
根据the JDBC documentation of Play Framework,您可以通过配置连接池为PRAGMA
文件中的每个新连接执行application.conf
来实现此目的:
db.default.initSQL="PRAGMA foreign_keys = true"
您可以将连接/服务器名称default
替换为mom
,或者如何配置JDBC连接。