Ошибка схемы базы данных drupal - PullRequest
0 голосов
/ 28 сентября 2011

В модуле, который я создаю для Drupal 7, я пытаюсь создать схему БД для процесса установки и удаления. При включении модуля (и, следовательно, при его установке) я получаю сообщение об ошибке, и моя таблица не создается.

Кто-нибудь может увидеть, в чем дело?

<?php
/**
 * Implementation of hook_schema().
 */
function wind_and_waves_schema() {
  $schema['wind_and_waves'] = array(
   'description' => 'Caches wind and waves data',
   'fields' => array(
     'id' => array(
       'description' => 'The unique identifier for this item.',
       'type' => 'serial',
       'disp-width' => '11',
       'unsigned' => TRUE,
     ),
     'creation' => array(
       'description' => 'Moment the data has been loaded',
       'mysql_type' => 'datetime',
       'disp-width' => '11',
     ),
     'load_time' => array(
       'description' => 'Moment the wind data has been loaded by rijkswaterstaat',
       'mysql_type' => 'datetime',
       'disp-width' => '11',
     ),
     'hoek_wind_snelheid' => array(
       'description' => 'Windsnelheid op hoek',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'hoek_wind_stoot' => array(
       'description' => 'Windstoot op hoek',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'hoek_wind_richting' => array(
       'description' => 'Windrichting op hoek',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'hoek_golf_hoogte' => array(
       'description' => 'golfhoogte op hoek',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'ijmuiden_wind_snelheid' => array(
       'description' => 'Windsnelheid op ijmuiden',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'ijmuiden_wind_stoot' => array(
       'description' => 'Windstoot op ijmuiden',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'ijmuiden_wind_richting' => array(
       'description' => 'Windrichting op ijmuiden',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'ijmuiden_golf_hoogte' => array(
       'description' => 'golfhoogte op ijmuiden',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'golf_periode' => array(
       'description' => 'golfperiode',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'watertemp' => array(
       'description' => 'watertemperatuur',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
     'luchttemp' => array(
       'description' => 'luchttemperatuur',
       'type' => 'varchar',
       'disp-width' => '11',
     ),
   ),
   'primary key' => array('id'),
  );
  return $schema;
}
?>

Я получаю ошибку:

PDOException: SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'DEFAULT NULL COMMENT' Windsnelheid op hoek ', hoek_wind_stoot VARCHAR DEFAULT' в строке 4: CREATE TABLE {wind_and_waves} (id INT unsigned auto_increment DEFAULT NULL COMMENT 'Уникальный идентификатор для этого элемента.', creation DATETIME DEFAULT NULL COMMENT 'Момент загрузки данных', hoek_wind_snelheid VARCHAR DEFAULT NULL COMMENT 'Windsnelheid op hoek', hoek_wind_stoot VARCHAR DEFAULT NULL COMMENT 'Windstoot op hoek ', hoek_wind_richting Комментарий VARCHAR DEFAULT NULL' Windrichting op hoek ', hoek_golf_hoogte Комментарий VARCHAR DEFAULT NULL' golfhoogte op hoek ', ijmuiden_wind_snelheid Комментарий VARCHAR DEFAULT NULL' Windsnelheid op ijmuden ', ijmuiden_wind_stoot VAR 'Windstoot op ijmuiden', ijmuiden_wind_richting VARCHAR DEFAULT NULL COMMENT 'Windrichting op ijmuiden', ijmuiden_golf_hoogte VARCHAR DEFAULT NULL COMMENT 'golfhoogte op ijmuiden', golf_periode VARCHAR DEFAULT NULL КОММЕНТАРИЙ 'golfperiode VARULLULLUAL' ULLD, ULL, VARCHAR DEFAULT COMLE 'watertemperatuur', luchttemp VARCHAR DEFAULT NULL C OMMENT 'luchttemperatuur', ПЕРВИЧНЫЙ КЛЮЧ (id)) ENGINE = InnoDB УСТАНОВКА ПО УМОЛЧАНИЮ ПО УМОЛЧАНИЮ utf8 КОММЕНТАРИЙ 'Кэширует данные о ветре и волнах'; Array () в db_create_table () (строка 2657 из /home/sitede01/domains/sitedezign.net/public_html/include/database/database.inc).

1 Ответ

2 голосов
/ 28 сентября 2011

Все столбцы типа varchar нуждаются в свойстве length, например ::

'luchttemp' => array(
   'description' => 'luchttemperatuur',
   'type' => 'varchar',
   'length' => 11
 )

disp-width действителен только для не varchar столбцов типа

...