当我查看我的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
任何人都知道如何解决这个问题?
答案 0 :(得分:7)
显然我还没有权利对Daniel的答案发表评论,因此我将其作为一个单独的答案添加。用户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;
答案 1 :(得分:3)
您不应手动创建表格,只需检查媒体文件夹的权限(必须 777 )。
答案 2 :(得分:3)
这是Magento核心中的问题,它被添加到跟踪器中并将被修复。
但是,您应该知道此错误的来源是您拥有不存在的文件的URL。 Magento核心唯一的问题是它会抛出“致命错误”,而不是显示404页面。
要解决此问题,请检查为什么您获取不存在的文件的网址。必须正确设置Media文件夹和子文件夹的权限 - 例如777(否则不会在那里创建图像)或者网址形成错误。
答案 3 :(得分:1)
这些表主要用于存储每个产品的上传图像。
此外,如果您的媒体默认存储设置为文件而不是数据库,magento将尝试查找文件系统中的每个图像,但如果失败,它将尝试在数据库中查找它。 / p>
请检查您的产品图片是否在媒体文件夹中(通常是媒体/目录/产品/ {az | 0-9} / {az | 0-9} /yourimage.jpg),否则即使创建了这些表格,您只会在请求这些文件时收到404 Not found错误。
答案 4 :(得分:0)
这个问题发生在我身上,我必须向媒体文件夹授予777权限。
答案 5 :(得分:0)
另外,请注意,如果您尝试在产品标题中使用非法字符,例如引号,这将导致magento尝试创建一个带有此字符的缩略图..这将导致图像失败并且magento将尝试从数据库中调用这些图像..如果你没有使用数据库进行存储,你会看到mysql错误
答案 6 :(得分:0)
如果您要使用文件系统存储,确保您的/ media目录设置为777并运行chmod -R o+w media
。如果错误仍然存在,解决问题的最简单方法如下:
core_directory_storage
删除最近创建的表中的所有行。您的表缺少错误现已消失。
答案 7 :(得分:0)
缺少的表可以由系统自动创建,您只需要执行以下操作:
System > Configuration
System (Advanced menu) > "Storage Configuration for Media" tab
并选择在DB中存储媒体文件,然后在同步完成后将其关闭。这将创建缺少的表。