我正在尝试从我的php脚本启用sqlite数据库的外键约束。
我试过了:
shell_exec('sqlite ex.db');
shell_exec('PRAGMA foreign_keys = ON');
echo $isEnabled = shell_exec('PRAGMA foreign_keys');
但我没有$isEnabled
作为1
。事实上,我没有得到任何输出。
感谢。
答案 0 :(得分:5)
为什么不使用内置的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支持,我认为没有理由让它更复杂,需要它。
答案 1 :(得分:0)
从sqlite command line shell tutorial开始,在shell脚本中有一节使用sqlite3:
当使用两个参数启动sqlite3程序时,第二个 参数传递给SQLite库进行处理,查询 结果以列表模式和程序打印在标准输出上 退出。
所以你可以尝试sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'