Ich habe eine mymodule.install-Datei geschrieben, die eine Schemadefinition enthält, um eine Tabelle in meiner Datenbank zu erstellen. Diese Tabelle enthält zwei Datenfelder. Diese Felder werden von den Benutzern ausgefüllt, wenn sie den spezifischen Inhalt ausfüllen (Beispiel: Festlegen eines Veröffentlichungsdatums für eine Nachricht). Jetzt habe ich das Modul "Datum der Einreichung" nicht absichtlich verwendet, da diese beiden Felder aus anderen Gründen in derselben Zeile in der Datenbanktabelle stehen mussten.
Das hook_schema definiert die beiden Felder folgendermaßen:
'pubblish_date' => array(
'description' => t('The pubblish date for the single news'),
'mysql_type' => 'datetime',
'not null' => FALSE,
),
'unpublish_date' => array(
'description' => t('The unpublish date for the single news'),
'mysql_type' => 'datetime',
'not null' => FALSE,
),
Die Tabelle ist korrekt in der Datenbank angelegt, aber ich bekomme immer die folgenden Ratschläge:
Feld news_board.pubblish_date: kein Schematyp für den mysql-Typ datetime. Feld news_board.unpublish_date: kein Schematyp für den mysql-Typ datetime. news_board.pubblish_date: kein Typ für Schematyp: normal. Feld news_board.pubblish_date: kein Schematyp für type. news_board.unpublish_date: kein Typ für Schematyp: normal. Feld news_board.unpublish_date: kein Schematyp für type.
Scheint mir komisch, weil ich in der Dokumentation rot die mysql_type-Spezifikation verwende, um das datetime-Format in der mysql-Datenbank zu speichern.
Ich weiß, dass Drupal native Zeitstempel unterstützt und wenn Sie ein anderes Datumsformat speichern möchten, müssen Sie spezifische Definitionen wie mysql_type oder pgsql_type verwenden, je nachdem, welche Datenbank Sie verwenden.
In Diskussionen habe ich festgestellt, dass viele Leute im Internet die mysql_type-Definition verwendet haben. Nach allem, was ich gesehen habe, haben sie das Problem gelöst. Warum funktioniert das bei mir nicht?
Danke vielmals.
•Field news_board.pubblish_date: no Schema type for mysql type datetime. •Field news_board.unpublish_date: no Schema type for mysql type datetime.
Wenn Sie einen Datensatztyp verwenden müssen, der nicht in der offiziell unterstützten Typenliste enthalten ist, können Sie für jedes Datenbank-Backend einen Typ angeben.
In diesem Fall können Sie den Typparameter weglassen, aber Sie werden darauf hingewiesen, dass Ihr Schema auf Backends, für die kein Typ angegeben wurde, nicht geladen werden kann. Eine mögliche Lösung kann darin bestehen, den Typ "Text" als Fallback zu verwenden. ( https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Database%21database.api.php/group/schemaapi/8.2.x )
'submit_date' => array( 'type' => 'varchar', 'mysql_type' => 'datet', )
quelle