Php CodeIgniter/dbForge-多键

Php CodeIgniter/dbForge-多键,php,codeigniter,dbforge,Php,Codeigniter,Dbforge,我使用CodeIgniters DBforge来使用我的数据库 我正在尝试将一个普通的PHP脚本转换为CodeIgniter,但在将SQL更改为dbforge时遇到了一些问题 我有以下SQL代码 CREATE TABLE `message2_recips` ( `mid` int(10) unsigned NOT NULL, `seq` int(10) unsigned NOT NULL, `uid` int(10) unsigned NOT NULL, `status` cha

我使用CodeIgniters DBforge来使用我的数据库

我正在尝试将一个普通的PHP脚本转换为CodeIgniter,但在将SQL更改为dbforge时遇到了一些问题

我有以下SQL代码

CREATE TABLE `message2_recips` (
  `mid` int(10) unsigned NOT NULL,
  `seq` int(10) unsigned NOT NULL,
  `uid` int(10) unsigned NOT NULL,
  `status` char(1) NOT NULL default 'N',
  KEY `m2r1` USING BTREE (`mid`,`status`),
  KEY `m2r2` USING BTREE (`uid`,`status`)
) ENGINE=InnoDB;
除了底部的两个键值外,其他一切都正常

我尝试过的一切似乎都不起作用包括

$this->dbforge->add_key(array('mid', 'status'));
$this->dbforge->add_key(array('uid', 'status'));
如果您能帮我翻译,我将不胜感激。我似乎找不到任何方法使用dbforge输入,这会使我的项目完全停顿


谢谢。

目前无法通过DB Forge完成-它不支持表键的其他选项。只有在原始SQL查询之后添加它们才能实现这一点。

DB_forge.php中有一个bug

您需要删除is_数组条件以启用多个键(mysql驱动程序中有将数组键转换为多个键的函数)

php:101

删除:

    if (is_array($key))
    {
        foreach ($key as $one)
        {
            $this->add_key($one, $primary);
        }

        return;
    }

出于好奇,为什么不使用普通的DB类和SQL来创建表?@TimWithers-对于这个项目,我想我会尝试迁移,因为它是完全受源代码控制的,我想在不接触DB的情况下部署到不同的地方。。。我读到dbforge是实现这一点的方法CodeIgniter文档说:“…add_key()之后必须调用create_table()”-这可能是问题的原因吗?另外,dbForge实际上只是SQL功能的一个方便的包装器-我发现我必须对它进行几次扩展,以获得所需的灵活性。@adomnom嘿,当我运行我在帖子中的add_键时,它抛出了一个错误,表示有两个状态键,除非您查看原始SQL,他们被命名了,我找不到这个。。。有没有办法在迁移文件中使用原始SQL来创建表,而不是使用codeigniters db包装器?