Drupal 7 更新模式破坏

Drupal 7 Update Schema Breaking

有人可以告诉我我是否遗漏了什么吗?在代码块之后一直抛出底部提到的错误。

function license_update_7101() {

  $schema['license_agreements'] = array(
    'description' => 'License User Agreements',
    'fields' => array(
      'license_id' => array(
        'description' => 'Primary key for license records',
        'type'        => 'serial',
        'not null'    => TRUE,
        'unsigned'    => TRUE
      ),
      'user_id' => array(
        'description' => 'License agreed to by User ID',
        'type'        => 'int',
        'not null'    => FALSE,
        'unsigned'    => TRUE,
        'default'     => '0'
      ),
      'product_id' => array(
        'description' => 'Product ID that represents the product this agreement was assigned to.',
        'type'        => 'int',
        'not null'    => FALSE,
        'unsigned'    => TRUE,
        'default'     => '0'
      ),
      'session' => array(
        'description' => 'Session created during account creation.',
        'type'        => 'varchar',
        'length'      => 32,
        'not null'    => FALSE,
        'default'     => ''
      ),
      'agreed' => array(
        'description' => 'Represents if the license was agreed to or not',
        'type'        => 'int',
        'size'        => 'tiny',
        'not null'    => FALSE,
        'unsigned'    => TRUE,
        'default'     => '0'
      ),
      'agreement_date' => array(
        'description' => 'Date this license was agreed to by user.',
        'type'        => 'datetime',
        'mysql_type'  => 'DATETIME',
        'disp-width'  => '11',
        'not null'    => FALSE,
        'default'     => NULL
      ),
      'blog_name' => array(
        'description' => 'URL for actual product license belongs to.',
        'type'        => 'varchar',
        'length'      => '128',
        'not null'    => FALSE,
        'default'     => ''
      ),
      'primary key' => array('license_id')
    )
  );

  db_create_table('license_agreements', $schema['license_agreements']);
}

错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB    [error]
server version for the right syntax to use near 'DEFAULT NULL
) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT 'License' at line 9

真的很想解决这个问题。

谢谢!

所以,感谢另一个开发人员来帮我找出问题所在,我在解决问题的过程中设法发现了问题。

'primary key' => array('license_id')

我最后注意到它嵌入在字段数组中,需要 outside/after 它。

因此,修复非常简单,只需将该行作为 license_agreements 数组的数组元素向下移动即可。问题已解决!