39 return extension_loaded(
'pdo_sqlite' );
51 if ( !self::isPresent() ) {
52 throw new MWException(
"Can't check SQL syntax: SQLite not found" );
54 if ( !is_array( $files ) ) {
58 $allowedTypes = array_flip( [
66 $db = DatabaseSqlite::newStandaloneInstance(
':memory:' );
68 foreach ( $files as
$file ) {
69 $err = $db->sourceFile(
$file );
75 $tables = $db->query(
"SELECT name FROM sqlite_master WHERE type='table'", __METHOD__ );
76 foreach ( $tables as $table ) {
77 if ( strpos( $table->name,
'sqlite_' ) === 0 ) {
81 $columns = $db->query(
"PRAGMA table_info({$table->name})", __METHOD__ );
82 foreach ( $columns as $col ) {
83 if ( !isset( $allowedTypes[strtolower( $col->type )] ) ) {
84 $db->close( __METHOD__ );
86 return "Table {$table->name} has column {$col->name} with non-native type '{$col->type}'";
91 return $e->getMessage();
93 $db->close( __METHOD__ );
This class contains code common to different SQLite-related maintenance scripts.
static isPresent()
Checks whether PHP has SQLite support.
static checkSqlSyntax( $files)
Checks given files for correctness of SQL syntax.
if(PHP_SAPI !='cli-server') if(!isset( $_SERVER['SCRIPT_FILENAME'])) $file
Item class for a filearchive table row.