[英]How do I IGNORE TABLE and Change ID in MySQL?
我在我的網站上安裝插件后出現以下錯誤消息。 我想知道要運行什么查詢才能使用MYSQL / PhpMyadmin來解決這個問題?
Zend_Db_Statement_Mysqli_Exception:Mysqli准備錯誤:您的SQL語法有錯誤; 檢查與您的MySQL服務器版本對應的手冊,以便在
'IGNORE TABLE `xf_trophy_category` DROP PRIMARY KEY , CHANGE `trophy_category_id`'
附近使用正確的語法'IGNORE TABLE `xf_trophy_category` DROP PRIMARY KEY , CHANGE `trophy_category_id`'
在第1行'IGNORE TABLE `xf_trophy_category` DROP PRIMARY KEY , CHANGE `trophy_category_id`'
- library / Zend / Db / Statement / Mysqli.php:77
UPDATE。
這是堆棧跟蹤。 我已經問過插件開發人員,但是他們沒有處理它。
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-> prepare('ALTER IGNORE TA ...')
3 /home/admin/web/.com/public_html/library/Waindigo/Install/20150313.php(758):
Zend_Db_Adapter_Abstract-> query('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 {主}
插件與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...')
從Waindigo/Install/20150313.php
第758行刪除單詞IGNORE
,以便它啟動ALTER TABLE ...
如果只是一個簡單的查詢會把事情做對,但在這種情況下,我懷疑這樣的查詢是不存在的。 好消息是錯誤指向軟件插件有問題。 雖然插件中可能存在錯誤,但研究錯誤消息可能會提示更可能的情況:軟件沖突。
OP聲明當前設置使用PHPMyAdmin和MySQL。 然而,在PHP的世界中,MySQL現在被認為是過時的,並且敦促用戶切換到MySQLi。 Zend的插件(可能是ZendFramework?)預計MySQLi顯然會引發它引發的錯誤:
Zend_Db_Statement_Mysqli_Exception:Mysqli准備錯誤:
根據此討論 ,如果安裝了mysqli,您可能需要按如下方式調整PHP配置文件:
$ 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
最后,您可能希望與此社區一起提出此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.