sqlite3에 연결하는 데 PDO를 사용하지만 외래 키가 작동하지 않습니다. 워드 프로세서에 따르면이 "PRAGMA short_column_names = 1"이이를 사용 가능하게 설정해야합니다. 나는 이렇게한다 :PDO의 sqlite3 외래 키
$con = new PDO('sqlite:z:/testing.db');
$res = $con->exec('PRAGMA foreign_keys=ON');
var_dump($res);die();
나는 0을 반환한다. 외래 키가있는 실제 테이블을 만들려고했으나 제대로 작동하지 않았다. sqlite3를 클래스 직접 요청 비록 일 :
$con = new SQLite3('z:/testing.db');
$con->exec('PRAGMA foreign_keys = ON;');
var_dump($con->query('PRAGMA foreign_keys;')->fetchArray());
이 어레이 (2) {[0] => INT (1) "foreign_keys"] => INT (1)}
가 따르면 reutrns SQLite3 :: version(), 나는 sqlite 버전 3.7.7.1있다. 내 PHP 버전은 5.3.18이고 Windows에서 실행됩니다.
PDO를 실행하는 데 도움주세요. 감사!
덕분에 많이 자세한 예를 들어! 당신 말이 맞아요, PRAGMA foreign_keys = ON을 사용했습니다. 질문에 잘못 쓰셨습니다. 귀하의 예제는 잘 작동, 나는 더 깊이 파고, 아마도 내 애플 리케이션과 다른 문제가 있습니다. $ con-> exec ('PRAGMA foreign_keys = ON')는 성공하더라도 PDO에 항상 0을 반환합니다. 이것은 혼란이었습니다. –
@PavelDubinin'PDO :: exec()'가'0'을 반환한다는 것은 [영향받는 행의 수를 반환하기 때문에] (http://php.net/manual/en/pdo.exec.php#refsect1 -pdo.exec-returnvalues). 그리고'PRAGMA foreign_keys = ON'은 어떤 행에도 영향을 미치지 않습니다. 명령문에서 오류가 발생하면'false'가 반환됩니다. –
오른쪽, 어떤 생각을 어떻게 foreign_keys의 실제 가치를 얻을? –