在模块安装过程中如何创建表


14

我正在尝试为Drupal 7创建一个模块,我需要创建3个表并填充它。但是首先我需要创建它。

在文件mymodule.install中,我有

function mymodule_install() {

}

function mymodule_uninstall() {

}


function myodule_schema() {
  $schema['mymodule_table'] = array(
    'description' => t('First table'),
    'fields' => array(
      'id' => array(
        'description' => t('My unique identifier'),
        'type' => 'int',
        'unsigned' => true,
        'not null' => true,
      ),
      'list' => array(
        'description' => t('list'),
        'type' => 'varchar',
        'not null' => true,
      ),
    ),
    'primary key' => array('id'),
  );
  return $schema;     
}

我究竟做错了什么?每次测试模块时,都会禁用它->卸载->性能清除缓存->启用它。


3
如果你有drush和安装devel的你可以使用drush devel-reinstall mymodule快速重新安装模块
FLY

Answers:


11

您缺少该列(“列表”)的length属性varcharlength是必需的,因此CREATE TABLE查询将失败。

Schema API文档

除“类型”外,所有参数都是可选的,除了“数字”类型的列必须指定“精度”和“比例”,而“ varchar”列必须指定“长度”。


4

myodule_schema有错别字。一个m是后失踪y


感谢BetaRide,这是一个转录错误。我给你一票,因为你已经阅读了我的文章,实际上我确实发现函数名称的拼写错误eh eh
Tyler Durden 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.