Я написал файл mymodule.install, который содержит определение схемы для создания таблицы в моей базе данных. Эта таблица содержит два поля данных. Эти поля будут заполнены пользователями, когда они будут заполнять конкретный контент (пример: указывать дату публикации новостей). Теперь я не использовал модуль «Дата внесения» специально, потому что мне нужно, чтобы эти два поля были в одной строке таблицы базы данных по другим причинам.
Таким образом, hook_schema определяет два поля:
'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,
),
Таблица создана правильно в базе данных, но я всегда получаю эти советы:
Поле news_board.pubblish_date: нет типа схемы для типа mysql datetime. Поле news_board.unpublish_date: нет типа схемы для типа mysql datetime. news_board.pubblish_date: нет типа для схемы. Тип: обычный. Поле news_board.pubblish_date: нет типа схемы для типа. news_board.unpublish_date: нет типа для схемы. Тип: обычный. Поле news_board.unpublish_date: нет типа схемы для типа.
Мне это кажется странным, потому что в документации я использовал спецификацию mysql_type для сохранения формата datetime в базе данных mysql.
Я знаю, что Drupal изначально поддерживает временные метки, и если вы хотите сохранить другой формат даты, вы должны использовать определенные определения, такие как mysql_type или pgsql_type, в зависимости от базы данных, которую вы используете.
В дискуссиях я обнаружил, что многие люди использовали определение mysql_type, и из того, что я увидел, они решили проблему, так почему это не работает для меня?
Большое спасибо.
•Field news_board.pubblish_date: no Schema type for mysql type datetime. •Field news_board.unpublish_date: no Schema type for mysql type datetime.
Если вам нужно использовать тип записи, не включенный в официально поддерживаемый список типов, вы можете указать тип для каждого бэкэнда базы данных.
В этом случае вы можете пропустить параметр типа, но имейте в виду, что ваша схема не сможет загружаться на серверы, для которых не указан тип. Возможным решением может быть использование типа «текст» в качестве запасного варианта. ( 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', )
источник