0

我有一个管理界面和游戏都使用的 PHP 后端应用程序。我知道我的 PHP 方式,但我不熟悉 Zend 和 Doctrine。

MySQL 中只有两个表(用于学校和学生),我想更改它们的名称前缀,因为它们指的是游戏的早期版本。

简而言之:我重命名了表,修改了所有 PHP 引用以使用新名称。Zend 和 Doctrine 文件夹中不再有旧名称的踪迹。但是现在 Web 应用程序失败了,因为它仍在寻找旧名称。

错误如下: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db1.neverland_schools' 不存在

所以发生的事情是我将表名从 neverland_schools 更改为 Adventure_schools。它仍在寻找旧的表名。

我怀疑这是缓存。但我没有对服务器的命令行访问权限,也没有通过命令行与 Doctrine 交谈的经验。

如果缓存是问题,是否有办法从 PHP 重置缓存?如果还有其他问题,我很想知道。

谢谢!

4

2 回答 2

0

您可以删除缓存数据:

  1. 你可以 emoty 服务器的临时文件夹

  2. 删除学说缓存

    $deleted = $cacheDriver->deleteAll();

也许您也应该清空代理文件夹。

您可以根据驱动程序验证您是否更改了元数据中的表名。如果您使用的是 yaml 或 xml,则 plin 文本搜索可能不会考虑文件格式。

注释

// entities/Product.php
/**
 * @Entity **@Table(name="products")**
 **/

xml

<entity name="Product" table="products">

yaml

# config/yaml/Product.dcm.yml
Product:
  type: entity
  table: products
于 2013-02-28T18:07:42.680 回答
0

如果您定义了基类您必须更改学校和学生base班级的名称。基类的路径在您的配置或引导文件中。

如果没有,您是否尝试过明确设置表名,如下面方法的第一行?

class Adventure_Schools extends Doctrine_Record { 
    public function setTableDefinition () { 
        $this->setTableName('adventure_schools');
...
于 2013-02-28T14:51:05.763 回答