在我的网站上安装插件后出现以下错误消息。我想知道要运行什么查询来解决MYSQL / PhpMyadmin的问题?
Zend_Db_Statement_Mysqli_Exception:Mysqli准备错误:你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,以便在
'IGNORE TABLE `xf_trophy_category` DROP PRIMARY KEY , CHANGE `trophy_category_id`'
附近使用正确的语法 在第1行 - library / Zend / Db / Statement / Mysqli.php:77
更新。
这是堆栈跟踪。我已经问过插件开发人员,但是他们没有处理它。
0 /home/admin/web/.com/public_html/library/Zend/Db/Statement.php(115):
Zend_Db_Statement_Mysqli-> _prepare('ALTER IGNORE TA ...')
1 /home/admin/web/.com/public_html/library/Zend/Db/Adapter/Mysqli.php(381):
Zend_Db_Statement-> __ construct(Object(Zend_Db_Adapter_Mysqli),'ALTER IGNORE TA ......')
2 /home/admin/web/.com/public_html/library/Zend/Db/Adapter/Abstract.php(478):
Zend_Db_Adapter_Mysqli->准备('ALTER IGNORE TA ...')
3 /home/admin/web/.com/public_html/library/Waindigo/Install/20150313.php(758):
Zend_Db_Adapter_Abstract->查询('ALTER IGNORE TA ...')
4 /home/admin/web/.com/public_html/library/Waindigo/Install/20150313.php(216):
Waindigo_Install-> _makeTableChanges(阵列)
5 /home/admin/web/.com/public_html/library/Waindigo/Install/20150313.php(88):
Waindigo_Install-> _install(Array,Object(SimpleXMLElement))
6 /home/admin/web/.com/public_html/library/XenForo/Model/AddOn.php(214):
Waindigo_Install :: install(false,Array,Object(SimpleXMLElement))
7 /home/admin/web/.com/public_html/library/XenForo/Model/AddOn.php(169):
XenForo_Model_AddOn-> installAddOnXml(Object(SimpleXMLElement),false)
8 /home/admin/web/.com/public_html/library/XenForo/ControllerAdmin/AddOn.php(188):
XenForo_Model_AddOn-> installAddOnXmlFromFile( '/家庭/管理/ TMP ...')
9 /home/admin/web/.com/public_html/library/XenForo/FrontController.php(351):
XenForo_ControllerAdmin_AddOn-> actionInstall()
10 /home/admin/web/.com/public_html/library/XenForo/FrontController.php(134):
XenForo_FrontController->调度(对象(XenForo_RouteMatch))
11 /home/admin/web/.com/public_html/admin.php(13):XenForo_FrontController-> run()
12 {main}
答案 0 :(得分:2)
插件与MySQL 5.7不兼容,或者编写代码的人显然没有意识到ALTER IGNORE
在MySQL Server 5.6中已被弃用,并且已在MySQL Server 5.7中完全删除。这总是一个坏主意,因为它促进了草率的数据库管理。
IGNORE
是标准SQL的MySQL扩展。如果新表中的唯一键上有重复项,或者如果启用了严格模式时出现警告,它将控制ALTER TABLE
的工作方式。如果未指定IGNORE
,则复制将中止并在发生重复键错误时回滚。如果指定了IGNORE
,则只对一行使用唯一键上具有重复项的行。其他冲突的行将被删除。不正确的值将被截断为最接近的匹配可接受值。从MySQL 5.6.17开始,不推荐使用
IGNORE
子句,并使用它生成警告。 MySQL 5.7中删除了IGNORE
。
错误是指the correct syntax to use near 'IGNORE ...'
,服务器告诉您遇到IGNORE
无效的地方。在此之前的所有内容都被正确解析,之后的所有内容可能都是正确的或可能是错误的,但是由于遇到了意外情况,因此无法确定。
如果我正确读取您的堆栈跟踪,它就在这里:
3
/home/admin/web/.com/public_html/library/Waindigo/Install/20150313.php(758):
Zend_Db_Adapter_Abstract->query('ALTER IGNORE TA...')
从IGNORE
第758行删除单词Waindigo/Install/20150313.php
,使其开始ALTER TABLE ...
。
答案 1 :(得分:0)
如果只是一个简单的查询会把事情做对,但在这种情况下,我怀疑这样的查询是不存在的。好消息是错误指向软件插件有问题。虽然插件中可能存在错误,但研究错误消息可能会提示更可能的情况:软件冲突。
OP声明当前设置使用PHPMyAdmin和MySQL。然而,在PHP的世界中,MySQL现在被认为是过时的,并且敦促用户切换到MySQLi。 Zend的插件(可能是ZendFramework?)预计MySQLi显然会引发错误:
Zend_Db_Statement_Mysqli_Exception:Mysqli准备错误:
根据这个discussion,您可能需要按照以下方式调整PHP配置文件,前提是您安装了mysqli:
$ cfg ['Servers'] [$ i] ['extension'] ='mysqli';
否则,您可能只需安装MySQLi即可使插件正常工作。
xerforo的要求提到:
XenForo系统要求 PHP:5.2.11+ MySQL:5.0+ PHP扩展: MySQLi,GD(支持JPEG),PCRE,SPL,SimpleXML,DOM,JSON, iconv,ctype PHP safe_mode off
最后,您可能希望使用此community提出此问题。