Bonjour,
Je suis en train de mettre à jour le plugin analyclick pour SPIP3. En effet, à l'installation, j'ai dans l'espace privé une erreur :
Erreur SQL HY000 / 1
no such table: spip_clics
SELECT * FROM spip_clics LIMIT 1
=== Création auto par la fabrique
J'ai lancé la fabrique pour refaire la déclaration des tables, et elle crée un
function anaclic_declarer_tables_objets_sql($tables) {
$tables['spip_clics'] = array(
'type' => 'clic',
'principale' => "oui",
'field'=> array(
"id_clic" => "bigint(21) NOT NULL auto_increment",
"objet" => "varchar(25) NOT NULL DEFAULT ''",
"id_objet" => "bigint(21) NOT NULL DEFAULT 0",
"ip" => "varchar(30) NOT NULL DEFAULT ''",
"maj" => "TIMESTAMP"
),
'key' => array(
"PRIMARY KEY" => "id_clic",
),
alors qu'il y a dans le plugin initial pour spip 3 (sur la zone) :
function anaclic_declarer_tables_auxiliaires($tables_auxiliaires){
$spip_clics = array(
"id_clic" => "int(10) unsigned NOT NULL auto_increment",
"id_objet" => "bigint(21) DEFAULT '0' NOT NULL",
"objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
"ip" => "VARCHAR (30) DEFAULT '' NOT NULL",
"maj" => "TIMESTAMP"
);
$spip_clics_key = array(
"PRIMARY KEY" => "id_clic,id_objet,objet",
"KEY id_clic" => "id_clic"
);
$tables_auxiliaires['spip_clics'] = array(
'field' => &$spip_clics,
'key' => &$spip_clics_key
);
=== QUESTIONS :
= 1. Les fonctions declarer_tables_objets_sql et declarer_tables_auxiliaires sont-elles totalement équivalentes, ou bien declarer_tables_objets_sql est-il réservé aux objets éditables dans l'interface privée ?
Dans le cas d'une table de stockage des clics que l'on édite pas, quelle formule est la plus adaptée ?
= 2. Pour la déclaration d'INDEX, la fabrique crée la clé primaire sur id_clic, normal.
Dans le plugin d'origine, la clé primaire est sur "id_clic,id_objet,objet", et id_clic est une clé simple : est-ce dans un objectif d'optimisation, et faut-il le maintenir ?
Merci
--
Stéphane
Les Voisins Spipeurs : http://www.voisins-spipeurs.net