Включить ограничение внешнего ключа sqlite DB из php-скрипта - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь включить ограничение внешнего ключа базы данных sqlite из моего сценария php.

Я пытался:

shell_exec('sqlite ex.db');

shell_exec('PRAGMA foreign_keys = ON');

echo $isEnabled = shell_exec('PRAGMA foreign_keys');

Но я не получаю $isEnabled как 1.На самом деле я ничего не получаю в качестве вывода.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 14 июля 2011

Почему вы не используете встроенный драйвер SQLite?

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

В соответствии с вашей проблемой: shell_exec() (как следует из названия) выполняет команды оболочки.Это означает, что вы пытаетесь выполнить три (!) Команды оболочки, но вы хотите выполнить одну, а затем вы хотите выполнить еще 2 команды в интерактивном sqlite3-процессе, который вы запускали ранее.Это невозможно таким образом.Возможно, вы можете поиграть с stdin, но поскольку PHP поставляется с поддержкой SQLite3, я не вижу причин, чтобы сделать его более сложным, чем это необходимо.

0 голосов
/ 14 июля 2011

Из Учебное пособие по командной строке sqlite есть раздел Использование sqlite3 в сценарии оболочки:

Когда программа sqlite3 запускается с двумя аргументами, передается второй аргументв библиотеку SQLite для обработки результаты запроса выводятся на стандартный вывод в режиме списка, и программа завершается.

Таким образом, вы можете попробовать sqlite3 ex.db 'PRAGMA foreign_keys = ON; PRAGMA foreign_keys'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...