PHP PDO关闭日志模式 [英] PHP PDO turn off journal mode

查看:84
本文介绍了PHP PDO关闭日志模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

场景:



使用PHP关闭日志模式:: PDO不起作用





 尝试 
{
$ dir = ' sqlite:C:/ SQLite /'。$ FileName。' 。sqlite';
$ database = new PDO($ dir) die( 无法打开数据库);
}
catch(例外$ e)
{
echo $ e-> getMessage();
echo 无法创建数据库< /跨度>;
}
$ mainQuery = PRAGMA journal_mode = OFF;
$ resultm = $ database-> query($ mainQuery);
$ arr = $ resultm-> errorInfo();
print_r($ arr);

$ mainQuery1 = PRAGMA synchronous = OFF;
$ resultm = $ database-> query($ mainQuery1);
$ arr1 = $ resultm-> errorInfo();
print_r($ arr1);

$ mainQuery2 = PRAGMA count_changes = OFF;
$ resultm = $ database-> query($ mainQuery2);
$ arr2 = $ resultm-> errorInfo();
print_r($ arr2);

$ mainQuery3 = PRAGMA temp_store = OFF;
$ resultm = $ database-> query($ mainQuery3);
$ arr3 = $ resultm-> errorInfo();
print_r($ arr3);





这是输出:



数组

[ 0 ] => 00000
[ 1 ] =>
[ 2 ] =>

数组

[ 0 ] => 00000
[ 1 ] =>
[ 2 ] => ;

数组

[ 0 ] => 00000
[ 1 ] =>
[ 2 ] =>

数组

[ 0 ] => 00000
[ 1 ] =>
[ 2 ] =>





和SQLSTATE erro r代码00000表示成功执行。



现在,如果我使用SQLITE管理器在Firefox中打开创建的sqlite数据库。在数据库设置选项卡中,我看到日志模式:删除和同步:关闭。我该如何完全关闭日志模式?



如果我尝试更改SQLITE管理器中的日志模式数据库设置,它将不会更改,因为存在一个表,我稍后在代码中创建。根据文档,这是有道理的。但是为什么日志模式不是首先关闭,而是保持默认删除。

解决方案

dir = ' sqlite:C:/ SQLite /'


FileName。' 。sqlite';


数据库 = PDO(

Scenario:

Turning off journal mode using PHP::PDO does not work


try
{
  $dir = 'sqlite:C:/SQLite/'.$FileName.'.sqlite';
  $database  = new PDO($dir) or die("cannot open the database");
}
catch(Exception $e)
{
    echo $e->getMessage();
    echo "Unable to create database";
}
$mainQuery = "PRAGMA journal_mode=OFF";
$resultm = $database->query($mainQuery);
$arr = $resultm->errorInfo();
print_r($arr);

$mainQuery1 = "PRAGMA synchronous=OFF";
$resultm = $database->query($mainQuery1);
$arr1 = $resultm->errorInfo();
print_r($arr1);

$mainQuery2 = "PRAGMA count_changes=OFF";
$resultm = $database->query($mainQuery2);
$arr2 = $resultm->errorInfo();
print_r($arr2);

$mainQuery3 = "PRAGMA temp_store=OFF";
$resultm = $database->query($mainQuery3);
$arr3 = $resultm->errorInfo();
print_r($arr3);



Here is the output:

Array
(
    [0] => 00000
    [1] =>
    [2] =>
)
Array
(
    [0] => 00000
    [1] =>
    [2] =>
)
Array
(
    [0] => 00000
    [1] =>
    [2] =>
)
Array
(
    [0] => 00000
    [1] =>
    [2] =>
)



And SQLSTATE error code 00000 means Successful Execution.

Now, if i open the created sqlite database using "SQLITE Manager" add on in firefox. In the "DB Settings" tab i see Journal Mode : delete and Synchronous : off. How the hell do i turn off the journal mode completely?

If i try to change the Journal Mode DB setting in the "SQLITE Manager", it will not change because a table exists which i am creating later in the code. This makes sense according to the documentation. But why isn't the journal mode turned off in the first place but stays in default delete.

解决方案

dir = 'sqlite:C:/SQLite/'.


FileName.'.sqlite';


database = new PDO(


这篇关于PHP PDO关闭日志模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆