【问题标题】:Magento - Base Table core_file_storage Doesn't existMagento - 基表core_file_storage不存在
【发布时间】:2011-09-07 02:53:34
【问题描述】:

当我查看我的 Magento 存储的错误日志时,它充满了这些错误:

[02-Jun-2011 13:49:12] PHP Fatal error:  Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mysite_mysite.core_file_storage' doesn't exist' in /home/mysite/public_html/lib/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 /home/mysite/public_html/lib/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 /home/mysite/public_html/lib/Zend/Db/Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#2 /home/mysite/public_html/lib/Zend/Db/Adapter/Abstract.php(479): Zend_Db_Statement->execute(Array)
#3 /home/mysite/public_html/lib/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT `e`.* FR...', Array)
#4 /home/mysite/public_html/lib/Varien/Db/Adapter/Pdo/Mysql.php(337): Zend_Db_Adapter_Pdo_Abstract->query('SELECT `e`.* FR...', Array)
#5 /home/mysite/public_html/lib/Zend/Db/Adapter/Abstract.php(753): Varien_Db_Adapter_Pdo_Mysql->query(Object(Varien_Db_Select), Array)
#6 /home/mysite/public_html/app/code/core/Mage/Core/Model/Mysql4/File/Storag in /home/mysite/public_html/lib/Zend/Db/Statement/Pdo.php on line 234

有人知道怎么解决吗?

【问题讨论】:

    标签: php mysql magento mysql-error-1146


    【解决方案1】:

    显然我还没有权限评论丹尼尔的答案,因此我将其添加为单独的答案。用户 a1anm 也在 Magento 论坛上提出了这个问题。在那里,用户 Furnitureforyoultd 用two different queries 回答了这个问题。

    首先,如果你还没有 core_directory_storage,运行:

    CREATE TABLE `core_directory_storage` (
      `directory_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `name` VARCHAR(255) NOT NULL DEFAULT '',
      `path` VARCHAR(255) NOT NULL DEFAULT '',
      `upload_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `parent_id` INT(10) UNSIGNED NULL DEFAULT NULL,
      PRIMARY KEY (`directory_id`),
      UNIQUE INDEX `IDX_DIRECTORY_PATH` (`name`, `path`),
      INDEX `parent_id` (`parent_id`),
      CONSTRAINT `FK_DIRECTORY_PARENT_ID` FOREIGN KEY (`parent_id`) REFERENCES `core_directory_storage` (`directory_id`) ON UPDATE CASCADE ON DELETE CASCADE
    ) COMMENT='Directory storage' COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT;
    

    然后,运行:

    CREATE TABLE `core_file_storage` (
      `file_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `content` LONGBLOB NOT NULL,
      `upload_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `filename` VARCHAR(255) NOT NULL DEFAULT '',
      `directory_id` INT(10) UNSIGNED NULL DEFAULT NULL,
      `directory` VARCHAR(255) NULL DEFAULT NULL,
      PRIMARY KEY (`file_id`),
      UNIQUE INDEX `IDX_FILENAME` (`filename`, `directory`),
      INDEX `directory_id` (`directory_id`),
      CONSTRAINT `FK_FILE_DIRECTORY` FOREIGN KEY (`directory_id`) REFERENCES `core_directory_storage` (`directory_id`) ON UPDATE CASCADE ON DELETE CASCADE
    ) COMMENT='File storage' COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=DEFAULT;
    

    【讨论】:

    • 如果您的问题与看不到任何产品图片有关,还要确保 media/ 目录拥有正确的所有权。如果它有并且您“Flash 目录图像缓存”,它应该在 media/catalog/product/cache 中创建缩放图像。
    • 记得找一个和你的magento版本一样的结构
    【解决方案2】:

    您不应该手动创建表格,只需检查您的 media 文件夹的权限(必须是 777)。

    【讨论】:

      【解决方案3】:

      这是 Magento 核心中的问题,已添加到跟踪器并将修复。

      但是,您应该知道此错误的根源是您的 url 指向不存在的文件。 Magento 核心的唯一问题是它会抛出“致命错误”而不是显示 404 页面。

      要解决这个问题,请检查为什么您会得到一个不存在的文件的 url。必须正确设置媒体文件夹和子文件夹的权限 - 例如777(否则不会在那里创建图像)或 url 格式错误。

      【讨论】:

        【解决方案4】:

        这些表主要用于存储每个产品上传的图片。

        此外,如果您的媒体默认存储设置为文件而不是数据库,magento 将尝试在文件系统中查找每个图像,但如果失败,它将尝试在数据库中查找。

        请检查您的产品图片是否在媒体文件夹中(通常是 media/catalog/product/{az|0-9}/{az|0-9}/yourimage.jpg),否则,即使在创建这些表格之后,请求这些文件时,您只会收到 404 Not found 错误。

        【讨论】:

          【解决方案5】:

          这个问题发生在我身上,我必须授予 777 对媒体文件夹的权限。

          【讨论】:

            【解决方案6】:

            另外,请注意,如果您尝试在产品标题中使用非法字符,例如引号,这将导致 magento 尝试创建包含此字符的缩略图。这将导致图像失败,而 magento 将尝试从数据库中调用这些图像。如果您没有使用数据库进行存储,您将看到 mysql 错误

            【讨论】:

              【解决方案7】:

              如果您将使用文件系统存储,确保您的 /media 目录设置为 777 并运行 chmod -R o+w media。如果错误仍然存​​在,解决问题的最简洁方法如下:

              1. 转到 SYSTEM>CONFIGURATION>ADVANCED>SYSTEM 并将“Storage Configuration for Media”切换到“Database”。单击同步。等待同步过程完成或超时(可能取决于您的设置)。表“core_directory_storage”已创建并填满。点击 SAVE CONFIG(不确定这一步是否必要,但无论如何都要这样做)。
              2. 如果同步过程超时,您可能会在 Magento Admin 中看到有关重大错误的通知“同步媒体存储时发生错误。”。没关系,因为下一步我们将恢复为基于文件的媒体存储。
              3. 在第 1 步中调整的相同设置中,切换回“文件系统”并再次单击“同步”。点击 SAVE CONFIG(不确定这一步是否必要,但无论如何都要这样做)。
              4. 现在转到您的数据库管理器(例如 PHPMyAdmin)并使用 DELETE FROM core_directory_storage 删除最近创建的表中的所有行。

              您的 table missing 错误现已消失。

              【讨论】:

                【解决方案8】:

                缺失的表可以由系统自动创建,您只需访问:

                System > Configuration
                System (Advanced menu) > "Storage Configuration for Media" tab
                

                并选择将媒体文件存储在数据库中,然后在同步完成后将其关闭。这将创建缺失的表。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-11-19
                  • 1970-01-01
                  • 2014-05-27
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-10-24
                  • 2018-10-13
                  相关资源
                  最近更新 更多