Php CodeIgniter/dbForge-多键
我使用CodeIgniters DBforge来使用我的数据库 我正在尝试将一个普通的PHP脚本转换为CodeIgniter,但在将SQL更改为dbforge时遇到了一些问题 我有以下SQL代码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
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包装器?