在php脚本中启用sqlite数据库的外键约束



我正在尝试从我的php脚本启用sqlite数据库的外键约束。

I tried:

shell_exec('sqlite ex.db');
shell_exec('PRAGMA foreign_keys = ON');
echo $isEnabled = shell_exec('PRAGMA foreign_keys');

但我没有得到$isEnabled作为1。事实上,我没有得到任何输出。

谢谢。

为什么不使用内置的SQLite驱动程序?

$con = new SQLite3('ex.db');
$con->exec('PRAGMA foreign_keys = ON;');
var_dump($con->query('PRAGMA foreign_keys;')->fetchArray());

根据您的问题:shell_exec()(顾名思义)执行shell命令。这意味着,您尝试执行三个(!)shell命令,但是您想要执行一个,然后您想要在之前启动的交互式sqlite3进程中执行另外两个命令。这样做是不可能的。也许你可以玩周围的stdin,但因为PHP自带sqlite3的支持,我不认为有理由使它更复杂,它需要。

在sqlite命令行shell教程中有一节在shell脚本中使用sqlite3:

当使用两个参数启动sqlite3程序时,第二个参数传递给SQLite库进行处理,即查询结果以列表模式打印在标准输出上,然后程序执行退出。

可以试试sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'

最新更新