Ho un problema con il comando VACUUM di SQLite su Altervista.
VACUUM serve a ripulire il DB rilasciando lo spazio inutilizzato; lo fa copiando il DB in un temporaneo e poi scambiando i file.
Eseguendolo ottengo un errore 23: 'authorization denied'.
Ho già verificato i permessi sia del db che della cartella che lo contiene, ma senza effetto. Ho anche verificato di poter scrivere/leggere/modificare i file nella TEMP di PHP (/membri/.dummy/temp) con successo.
Ho preparato uno scriptino di test:
In locale funziona ma su altervista il risultato è:Codice PHP:<?php
try {
echo "<pre>";
echo "Temp dir: ".sys_get_temp_dir()."\n";
echo "Vacuum...";
$pdo = new PDO('sqlite:demo.s3db');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// dati casuali
$pdo->exec("DROP TABLE IF EXISTS 'test'");
$pdo->exec("CREATE TABLE 'test' (key TEXT PRIMARY KEY)");
$pdo->exec("INSERT INTO 'test' VALUES('00QN252SSR3S97S5SO91NQ5N2SQ5R716')");
$pdo->exec("INSERT INTO 'test' VALUES('04736SP90PQQ0Q6O63Q77O0N2PP91363')");
$pdo->exec("INSERT INTO 'test' VALUES('04O72P4S21161Q363N7R8N320Q85263Q')");
$pdo->exec("INSERT INTO 'test' VALUES('04P5O0S17351132684Q99PN8N87N2QPP')");
$pdo->exec("INSERT INTO 'test' VALUES('055S8826601465Q2QS4R9RQ8726O08SN')");
$pdo->exec("DELETE FROM 'test';");
// pulizia
$pdo->exec('VACUUM');
// fine
echo "OK\n";
} catch (Exception $e) {
echo "\n".var_export($e, true);
}
echo "</pre>";
?>
Credo che SQLite usi la temp di sistema e non quella di PHP e quindi, quando deve eliminare il DB temporaneo, va in errore.Codice:Temp dir: /membri/.dummy/temp Vacuum... PDOException::__set_state(array( 'message' => 'SQLSTATE[HY000]: General error: 23 authorization denied', 'string' => '', 'code' => 'HY000', 'file' => '/membri/coolsoft/vacuum.php', 'line' => 30, 'trace' => array ( 0 => array ( 'file' => '/membri/coolsoft/vacuum.php', 'line' => 30, 'function' => 'exec', 'class' => 'PDO', 'type' => '->', 'args' => array ( 0 => 'VACUUM', ), ), ), 'errorInfo' => array ( 0 => 'HY000', 1 => 23, 2 => 'authorization denied', ), ))
Qualche admin può confermare la mia tesi?
Grazie per l'aiuto

LinkBack URL
About LinkBacks


