控制台架构更新和新表

时间:2014-10-09 18:51:08

标签: cakephp

我试图用cake架构更新mysql数据库。在旧数据库中,我有2个表。在我尝试更新的新版本中,有2个新表。

当我执行cake schema update时,会抛出错误:

  

SQLSTATE [42S02]:未找到基表或视图:1146表' db.new_table'不存在

很明显,因为那两个新表并不存在,所以CakeConsole应该先创建它们。

我正在使用2.3版。有没有选项来纠正这个错误?还是在以后的版本中解决了?

1 个答案:

答案 0 :(得分:0)

最后我升级到最新版本(2.5.5)。现在,架构更新完美无缺。因为SchemaShell.php的第379-393行有一些变化会检查是否存在表格。

if (empty($table)) {
    foreach ($compare as $table => $changes) {
        if (isset($compare[$table]['create'])) {
            $contents[$table] = $db->createSchema($Schema, $table);
        } else {
            $contents[$table] = $db->alterSchema(array($table => $compare[$table]), $table);
        }
    }
} elseif (isset($compare[$table])) {
    if (isset($compare[$table]['create'])) {
        $contents[$table] = $db->createSchema($Schema, $table);
    } else {
        $contents[$table] = $db->alterSchema(array($table => $compare[$table]), $table);
    }
}