Skip to content
Extraits de code Groupes Projets
Valider b25e5b8e rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Faire le même traitement de spip_sqlite_create() que spip_sqlite_alter() pour...

Faire le même traitement de spip_sqlite_create() que spip_sqlite_alter() pour enlever les UNSIGNED et autres déclarations que n'apprécie pas SQLite aussi dans les alter.

Il y a un problème avec la gestion des reférers qui font quotidiennement un ALTER TABLE ... DROP... CHANGE ... ADD ; mais sqlite ne sait pas faire le DROP column (ni le ALTER column)... Comment faire donc ?
parent 6a1edf19
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -177,6 +177,7 @@ function spip_sqlite_query($query, $serveur='') {
/* ordre alphabetique pour les autres */
function spip_sqlite_alter($query, $serveur=''){
$query = _sqlite_remplacements_definitions_table($query);
return spip_sqlite_query("ALTER ".$query, $serveur);
}
......@@ -211,23 +212,9 @@ function spip_sqlite_create($nom, $champs, $cles, $autoinc=false, $temporary=fal
$character_set .= " COLLATE ".$GLOBALS['meta']['charset_collation_sql_base'];
*/
// quelques remplacements
$num = "\s?(\([0-9]*)\)?";
$enum = "\s?(\(.*)\)?";
$remplace = array(
// pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
'(big)?int(eger)?'.$num => 'INTEGER',
'enum'.$enum => 'VARCHAR',
'binary' => ''
);
$champs = _sqlite_remplacements_definitions_table($champs);
$_replace = array();
foreach ($remplace as $cle=>$val)
$_replace["/$cle/is"] = $val;
$champs = preg_replace(array_keys($_replace), $_replace, $champs);
foreach($champs as $k => $v) {
// je sais pas ce que c'est ca...
// puis personne rentre ici vue qe binary->''
......@@ -861,15 +848,6 @@ function _sqlite_charger_version($version=''){
return $versions;
}
/*
* renvoyer la liste des versions sqlite disponibles
* sur le serveur
*/
function spip_versions_sqlite(){
return _sqlite_charger_version();
}
/*
......@@ -929,6 +907,34 @@ function _sqlite_ref_fonctions(){
// $query est une requete ou une liste de champs
function _sqlite_remplacements_definitions_table($query){
// quelques remplacements
$num = "\s?(\([0-9]*)\)?";
$enum = "\s?(\(.*)\)?";
$remplace = array(
// pour l'autoincrement, il faut des INTEGER NOT NULL PRIMARY KEY
'/(big)?int(eger)?'.$num.'/is' => 'INTEGER',
'/enum'.$enum.'/is' => 'VARCHAR',
'/binary/is' => ''
);
return preg_replace(array_keys($remplace), $remplace, $query);
}
/*
* renvoyer la liste des versions sqlite disponibles
* sur le serveur
*/
function spip_versions_sqlite(){
return _sqlite_charger_version();
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter