【问题标题】:Incorrect table definition; there can be only one auto column and it must be defined as a key Codeigniter表定义不正确;只能有一个自动列,并且必须将其定义为键 Codeigniter
【发布时间】:2016-05-01 20:44:24
【问题描述】:

我想在模型中创建一个方法来处理数据库创建。但是当我运行它时它说

表定义不正确;只能有一个自动列,它 必须定义为一个键

private function create_users_table()
{
    $this->load->dbforge();
    $this->dbforge->add_field('id INT(11) NOT NULL AUTO_INCREMENT');
    $this->dbforge->add_field('email VARCHAR(200) NOT NULL');
    $this->dbforge->add_field('password VARCHAR(200) NOT NULL');
    $this->dbforge->add_field('created DATETIME NOT NULL');
    $this->dbforge->add_field('last_login DATETIME NOT NULL');
    $this->dbforge->add_key('id',TRUE);
    $this->dbforge->create_table($this->users_table);
}

【问题讨论】:

  • 尝试id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY 并删除单独的add_key() 调用。

标签: php codeigniter mysqli


【解决方案1】:

codeigniter 中的 db forge 类自动将 id 字段识别为主键。

$this->dbforge->add_field('id'); // gives id INT(9) NOT NULL AUTO_INCREMENT

【讨论】:

    【解决方案2】:

    感谢 Neit 的帮助。答案是:id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY

    【讨论】:

    • 这是因为“将原始字符串作为字段传递后不能在这些字段上调用 ​​add_key()。”如docs中所述。
    猜你喜欢
    • 2015-04-05
    • 2013-07-12
    • 1970-01-01
    • 2017-05-31
    • 2020-01-01
    • 2013-12-17
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多