我正在尝试从我的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'