Eu escrevi um arquivo mymodule.install que contém uma definição de esquema para criar uma tabela no meu banco de dados. Esta tabela contém dois campos de dados. Esses campos serão preenchidos pelos usuários quando eles preencherem o conteúdo específico (exemplo: para especificar uma data de publicação para uma notícia). Agora não usei o módulo de contribuição de data de propósito, porque precisava que esses dois campos estivessem na mesma linha na tabela do banco de dados por outros motivos.
O hook_schema define os dois campos desta maneira:
'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,
),
A tabela foi criada corretamente no banco de dados, mas eu sempre recebo essas mensagens de aviso:
Campo news_board.pubblish_date: nenhum tipo de esquema para o tipo mysql datetime. Campo news_board.unpublish_date: nenhum tipo de esquema para o tipo mysql datetime. news_board.pubblish_date: nenhum tipo para o tipo de esquema: normal. Campo news_board.pubblish_date: nenhum tipo de esquema para o tipo. news_board.unpublish_date: nenhum tipo para o tipo de esquema: normal. Campo news_board.unpublish_date: nenhum tipo de esquema para o tipo.
Parece estranho para mim, porque eu, na documentação, uso a especificação mysql_type para armazenar o formato de data e hora no banco de dados mysql.
Eu sei que o Drupal suporta timestamps nativos e se você deseja armazenar um formato de data diferente, deve usar definições específicas como mysql_type ou pgsql_type de acordo com o banco de dados que você está usando.
Nas discussões, descobri on-line muitas pessoas usaram a definição mysql_type e, pelo que vi, resolveram o problema, então por que não funciona para mim?
Muito obrigado.
•Field news_board.pubblish_date: no Schema type for mysql type datetime. •Field news_board.unpublish_date: no Schema type for mysql type datetime.
Se você precisar usar um tipo de registro não incluído na lista de tipos oficialmente suportados, poderá especificar um tipo para cada back-end do banco de dados.
Nesse caso, você pode deixar de fora o parâmetro type, mas lembre-se de que seu esquema falhará ao carregar em back-end que não têm um tipo especificado. Uma solução possível pode ser usar o tipo "texto" como substituto. ( 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', )
fonte