Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst] Fehler bei der Tabellenerzeugung (PDOException SQLSTATE 42522 bzw. 42000)

Eingetragen von Igniting (49)
am 09.01.2013 - 08:39 Uhr in
  • Modul-Entwicklung
  • Drupal 7.x oder neuer

Liebe Forumsmitglieder,

Ich bin Drupal-Anfänger und versuche momentan, mithilfe von Formularen (durch Module erzeugt) Eingaben von Website-Benutzern in eine Datenbank zu speichern. Momentan artet das aber mit dem Fehler "PDOException: SQLSTATE [42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax: [...]" (siehe dazu Dateianhang) aus und ich weiß nicht warum.

Eine Tabelle mit den entsprechenden Attributen erzeuge ich über die .install-Datei, und in der .module-Datei versuche ich (unter Drupal 7.18) mit dem Befehl

Zitat:

function Entitaet_page_form_submit($form, &$form_state) {
drupal_write_record(Entitaet, $form_state['values']);
}

meine Eingaben zu speichern.

Ich habe auch schon versucht, diesen durch das klassische SQL-Stataement zu ersetzen, da hat mir meine Website aber nur ein BLANK geliefert. Außerdem habe ich die Datentypen der Tabelle mit den von mir eingegebenen Testdaten abgeglichen, weil ich dort einen unpassenden Datentyp vermutet habe, was aber anscheinend auch nur falscher Alaram war.

Ich habe bereits versucht, mich mit diversen Foreneinträgen (bspw. http://www.drupalcenter.de/node/40593) schlau zu machen, was aber nicht ganz funktioniert hat (liegt vielleicht auch an meinem noch fehlenden Verständnis). Kann mir vielleicht eine/r von Euch weiterhelfen?

Liebe Grüße,
Igniting

AnhangGröße
Fehlermeldung.png230.52 KB
‹ [gelöst] Problem mit db_select->condition() [gelöst] Fehler bei der Tabellenerzeugung (PDOException SQLSTATE 42522 bzw. 42000) ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

kann es sein

Eingetragen von ronald (3857)
am 09.01.2013 - 09:15 Uhr

dass der, in den settings hinterlegte, datenbankuser keine vollen adminrechte auf der Datenbank hat?

Wie hast du das Statement überprüft?

Läuft es im phpMyAdmin fehlerlos durch?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nein, der Datenbankuser hat

Eingetragen von Igniting (49)
am 09.01.2013 - 11:13 Uhr

Nein, der Datenbankuser hat volle Zugriffsrechte!
Das Statement habe ich überprüft, indem ich drupal_write_record in der .module-Datei einfach durch db_query("usw.") ersetzt habe (und was dann auch zum BLANK führte).
Im phpMyAdmin werden die Tabellen erzeugt, sodass ich sie auch sehe.

Danke für die Anteilnahme :)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das Problem sind deine

Eingetragen von Sense (1559)
am 09.01.2013 - 12:19 Uhr

Das Problem sind deine Spaltennamen.
Du solltest die Spalte nicht "E-Mail-Adresse" nennen sondern "e_mail_adresse", dann gibt es auch keine Probleme. In der Fehlermeldung kann man das ziemlich gut sehen, da er den Ort des Fehler ja genau anzeigt: "... near ..."

Das gilt übrigends für alle Felder.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich habe es jetzt schon mit

Eingetragen von Igniting (49)
am 09.01.2013 - 15:23 Uhr

Ich habe es jetzt schon mit "e_mail_adresse" und mit "emailadresse" versucht, beide Male erhalte ich wiederum eine etwas andere Fehlermeldung (siehe Anhang).

Und was meinst du mit

Zitat:

Das gilt übrigends für alle Felder.

?
"E-Mail-Adresse" war die einzige Spalte, bei der die Benennung für die Fehlermeldung ausschlaggebend war/ist. Oder verstehe ich das falsch?

AnhangGröße
Fehlermeldung_2.PNG 73.8 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Jetzt hast Du aber

Eingetragen von Sense (1559)
am 09.01.2013 - 15:31 Uhr

Jetzt hast Du aber wahrscheinlich vergessen, das Schema in der Install des Modules anzupassen und danach den Cache zu leeren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

An die Änderung im Install

Eingetragen von Igniting (49)
am 09.01.2013 - 15:55 Uhr

An die Änderung im Install habe ich gedacht, aber an den Cache nicht.

Nun habe ich alle dazugehörenden Dateien überprüft und überall, wo erforderlich, steht "emailadresse" und den Cache habe ich auch geleert jedoch meine beiden Versuche haben wieder folgenden Fehler (Anhang) erzeugt.

Kann es noch eine andere Fehlerursache geben außer eine falsche Benennung bzw unterschiedliche Benennungen in den module-/install-Dateien?

Aber vielen Dank für deine Hilfe, ich habe das Gefühl, dass es sich nur noch um eine Kleinigkeit handeln kann.

AnhangGröße
Fehlermeldung_3.PNG 72.61 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hast Du denn die Spalte auch

Eingetragen von Sense (1559)
am 09.01.2013 - 16:02 Uhr

Hast Du denn die Spalte auch in der DB umbenannt, da der SQL-Befehl sie nicht findet?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmmmm

Eingetragen von Igniting (49)
am 09.01.2013 - 20:20 Uhr

Darauf bin ich davor ehrlich gesagt nicht draufgekommen. Hab deinen Tipp gleich ausprobiert (also Modul deinstalliert, Spalte der Tabelle umbenannt, Cache geleert, Modul wieder installiert), aber der Fehler will einfach nicht weg.

Das Lustigste ist ja, dass ich momentan ein weiteres Modul installiert habe, welches genau dasselbe macht, wie dieses Modul (also ein Formular erzeugt und Eingaben speichert), jedoch übernimmt das installierte Modul die Datensätze korrekt und ganz ohne Probleme in die Datenbank. Beide Module habe ich auf dieselbe Art und Weise programmiert.

AnhangGröße
Fehlermeldung_4.PNG 72.89 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Naja, er findet die Spalte

Eingetragen von Sense (1559)
am 09.01.2013 - 23:00 Uhr

Naja, er findet die Spalte immer noch nicht. Ich habe zu diesem Thema mal ein Tutorial geschrieben:
http://www.sense-design.de/tutorial/drupal-formular-datenbank-speichern

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Hinweis, jedoch

Eingetragen von Igniting (49)
am 10.01.2013 - 08:11 Uhr

Danke für den Hinweis, jedoch musste ich feststellen, dass dein Tutorial genau jene Seite ist, von der wir überhaupt erfahren haben, wie wir (also mein Team und ich) Module zu diesem Thema programmieren können. Wir haben uns auch an diese Vorlage gehalten und bis auf ein zusätzliches Redirect am Ende alles genauso gemacht, wie es dein Code beschreibt.

Denkst du, es macht Sinn, wenn wir das Modul deinstallieren, "neu programmieren" (sprich kopieren und Variablennamen gut kontrollieren) und vorallem die Datenbank aus phpMyAdmin löschen, falls es dort vielleicht Probleme gibt?

Der "Prototyp" unseres Projekts soll nämlich schon bis morgen fertig sein.

Ich will nicht aufdringlich sein, aber denkst du, es wäre möglich, dass ich dir die .install- und die .module-Datei anhänge und du vielleicht nur kurz drüberschauen könntest?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi,ich will nicht

Eingetragen von Sense (1559)
am 10.01.2013 - 09:19 Uhr

Hi,

ich will nicht ausschließen dass mein Tutorial vielleicht einen Fehler hat aber eigentlich sollte das funktionieren.
Pack die beiden Dateien doch einfach hier rein, Tabelle sollte gelöscht werden wenn das Modul deinstalliert wird.

Ich werd mein Tutorial auch nochmal überprüfen.

UPDATE: Mein Tutorial funktioniert einwandfrei.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie gesagt, das eine Formular

Eingetragen von Igniting (49)
am 10.01.2013 - 10:10 Uhr

Wie gesagt, das eine Formular funktioniert einwandfrei, nur bei diesem gibt es dieses hartnäckige Problem (daher hätte ich den Code von deiner Website auch niemals angezweifelt). Die .module-Datei befindet sich im Anhang und untenstehend ist die .install-Datei (.install-Dateien werden beim Upload ja nicht unterstützt).

Zitat:

<?php

/**
* Implements hook_schema().
*/

function Partner_schema() {
$schema['Partner'] = array(
'fields' => array(
'Partnernummer' => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
'Profilnummer' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'Strasse' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'Hausnummer' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'Postleitzahl' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
'Stadt' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'Land' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'emailadresse' => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
'Telefonnummer' => array('type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0),
),
'foreign keys' => array(
'Profil' => array(
'table' => 'Profil',
'columns' => array('Profilnummer' => 'Profilnummer'),
),
'UserId' => array(
'table' => 'users',
'columns' => array('uid' => 'Partnernummer'),
),
),
'primary key' => array('Partnernummer'),
);

return $schema;
}

Für mich ist formal kein Fehler zu erkennen, aber ich hab ja vergleichsweise eher wenig Ahnung/Durchblick.

AnhangGröße
Partner.module 1.79 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Kannst Du die Codes entweder

Eingetragen von Sense (1559)
am 10.01.2013 - 10:27 Uhr

Kannst Du die Codes entweder auf pastebin.com packen oder mir direkt schicken. Aus Sicherheitsgründen können hier keine .module Dateien geöffnet werden.
Mail: contact@sense-design.de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 12 Stunden
  • Hey danke
    vor 3 Tagen 6 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 58 Minuten
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 5 Tagen
  • In der entsprechenden View
    vor 1 Woche 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 5 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association