簡體   English   中英

如何在MySQL中IGNORE TABLE和Change ID?

[英]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

https://dev.mysql.com/doc/refman/5.6/en/alter-table.html

錯誤是指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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM