我编写了一个模块,它拒绝在我的mysql4-install-1.0.0.php文件中创建表格的空白....但只在实时服务器上。
有趣的是,在我的本地计算机(它是实时服务器的镜像(即相同的文件结构等))上,安装正确运行并创建表。
基于文件是否相同的事实,我可以假设它是服务器配置和/或权限问题?我到处寻找,我发现任何日志文件(PHP,MySQL,Apache,Magento)都没有问题。
我可以在测试脚本中创建表格(使用core_read / write)。
之前有人看过这个吗?
由于
**编辑**两种环境之间的一个主要区别是,在实时服务器上MySQL是远程的(不是localhost)。开发服务器是localhost。这会导致问题吗?
答案 0 :(得分:5)
您的安装脚本是安装在实时服务器上的模块吗? (app / etc / modules /中的XML文件,Module List Module用于调试。)
您的模块的core_resource
表中是否已有记录?如果是,请将其删除以将脚本设置为重新运行。
如果文件名称正确? _modifyResourceDb
中的app/code/core/Mage/Core/Model/Resource/Setup.php
方法是此文件包含/运行的位置。阅读more here
答案 1 :(得分:3)
可能是一个权限问题 - 面向公众的代码使用的MySQL帐户应该拥有尽可能少的权限,但仍然可以让它完成工作,这通常不允许创建/更改/删除表。
使用你用mysql连接的任何用户名,然后执行:
SELECT User, Host
FROM mysql.user
WHERE User='your username here';
这将显示可用于该特定用户名的用户@主机组合,然后您可以通过
获得实际权限show grants for username@host;
对live和devlopment服务器上的两个帐户执行此操作,这将显示实时系统中缺少的权限。
答案 2 :(得分:1)
在Admin-> System-> Advanced部分,您的模块是否存在并已启用?
您是否真的将模块拆包到正确的空间,例如app / code / local / yourcompany / yourmodule?
你有app / etc / modules / yourmodule.xml - 我相信这可能是被忽视的文件引起你的问题。
答案 3 :(得分:1)
缓存可能是罪魁祸首,如果您手动删除模块的core_resource行以便再次运行安装程序sql,则还必须刷新缓存
dev和生产服务器之间的区别可能就是缓存设置,这可以解释为什么你只在生产中看到这个
答案 4 :(得分:0)
对我来说,使用Windows进行开发时出现了问题。 Linux系统区分大小写。在我的config.xml
中,设置部分的名称为camelCase
,而文件夹的名称为all-lowercase
。使它们相同会使脚本运行。