[gelöst] hook_install greift nicht
am 10.12.2009 - 13:12 Uhr in
hallo und guten tag
in meinem modul wird das hook_install nicht
ausgefuehrt. ich habe dazu schon das forum durchsucht und
die loesungen da funktionieren bei mir leider nicht:
-> modul dekativieren/ deinstallieren
-> das modul loeschen aus der systemtabelle
( DELETE FROM system WHERE name = 'tester')
-> neuinstallieren / neuaktivieren
ich hab das modul mal in ganz kleiner form
nachgebaut, vielleicht sehe ich den wald ja nicht
mehr:
also ersteinmal mein modul:
<?php
// test.module
function test_menu() {
$items = array();
$items[] = array(
'path' => 'tester',
'callback' => 'test_content',
'access' => user_access('access content'),
'type' => MENU_CALLBACK
);
return $items;
}
function test_content(){
$output = "<h1>Eine Überschrift</H1>";
return $output;
}
?>
und dann meine install
<?php
//test.install
function test_install() {
$sql = 'CREATE TABLE {tester} (
uid int,
page varchar(100),
text varchar(255),
time int);';
db_query($sql);
}
function test_uninstall() {
$sql = 'DROP TABLE {tester}';
db_query($sql);
?>
die test.info brauch ich ja hier jetz nicht posten..
ich kann aus dem test.modul ansonsten aber
einen db_query() absetzten
ganz komisch..?!?
was mache ich falsch?
vielen dank und beste gruesse
- Anmelden oder Registrieren um Kommentare zu schreiben
Hast du schonmal geschaut,
am 10.12.2009 - 13:33 Uhr
Hast du schonmal geschaut, wie die install-Dateien anderer Module aussehen? Dort wird die Datenbanktabelle über hook_schema erstellt. Das wäre definitiv die bessere Lösung.
Ansonsten, haste die SQL-Anweisung schon mal über PHPMyAdmin ausgeführt um zu schaun ob diese korrekt ist? Kannst du Rechtschreibfehler bei Datei-Namen ausschließen?
hi stebeg danke fuer deine
am 10.12.2009 - 14:14 Uhr
hi stebeg
danke fuer deine schnelle antwort!!
ja, das mit dem hook_schema hatte ich rausgelassen um das test modul
schlank zu halten.
aber habs jetzt mal eingebaut:
(funktioiniert dennoch nich..)
<?php
//test.install
function test_install() {
drupal_install_schema('test_schema');
}
function test_uninstall() {
drupal_uninstall_schema('test_schema');
}
function test_schema(){
$schema['test_main'] = array(
'fields' => array(
'tid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
'page' => array(
'type' => 'varchar',
'length' => 127,
'not null' => TRUE,
'default' => '',
),
),
'indexes' => array(
'tid' => array('tid'),
),
'primary key' => array('tid'),
);
return $schema;
}
?>
die sql anweisung aus dem direkten
db_query() im ersten bsp hab ich mal
per phpmyadmin eingegeben.
da wurde die tabelle korrekt angelegt.
es werden auch kein mysql error in den drupal logs
eingetragen wenn ich das db_query() absetzte.
die datei namen sind auch korrekt
also
test.module
test.install
er liest die dateien schon ein, denn wenn ich
einen syntax fehler habe, gibt es auch einen
error. aber erfuehrt es wird irgendwie nicht aus.
ojeh..
achso:
am 10.12.2009 - 16:38 Uhr
hab uebersehen, das
drupal_install_schema()
ist ja drupal 6
und gibt es nicht bei drupal 5
peinlich...
ich brauche das fuer drupal 5..
aber der hook_install()
ist doch auch drupal 5
laut api doku..
das muesste doch funktionieren..
sorry fuer die verwirrung
ok fehler gefunden
am 10.12.2009 - 17:19 Uhr
ufff
ich hab nicht darauf geachtet, dass bei der
deinstallierung auch das modul 'test' aus der
tabelle system geloescht wird, vor einer
neuinstallation.
daher wurde das anscheinend nie richtig aktualisiert
uiii
das devel modul muss ich mir jetzt auch mal ankucken
da kann man das dann ja alles per klick machen
mit dem leeren der module registrierungen