php - 如何在 MySQL 中忽略表和更改 ID?

标签 php mysql mysqli phpmyadmin

我在我的网站上安装了插件后出现了以下错误信息。我想知道要运行什么查询才能解决 MYSQL/PhpMyadmin 的这个问题?

Zend_Db_Statement_Mysqli_Exception: Mysqli prepare error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IGNORE TABLE `xf_trophy_category` DROP PRIMARY KEY , CHANGE `trophy_category_id`' at line 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->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(Array)

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('/home/admin/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->dispatch(Object(XenForo_RouteMatch))

11 /home/admin/web/.com/public_html/admin.php(13): XenForo_FrontController->run()

12 {main}

最佳答案

插件与 MySQL 5.7 不兼容,或者编写代码的人显然没有意识到 ALTER IGNORE在 MySQL Server 5.6 中已弃用,并已在 MySQL Server 5.7 中完全删除。这总是一个坏主意,因为它促进了草率的数据库管理。

IGNORE is a MySQL extension to standard SQL. It controls how ALTER TABLE works if there are duplicates on unique keys in the new table or if warnings occur when strict mode is enabled. If IGNORE is not specified, the copy is aborted and rolled back if duplicate-key errors occur. If IGNORE is specified, only one row is used of rows with duplicates on a unique key. The other conflicting rows are deleted. Incorrect values are truncated to the closest matching acceptable value.

As of MySQL 5.6.17, the IGNORE clause is deprecated and its use generates a warning. IGNORE is removed in MySQL 5.7.

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...')

去掉IGNORE这个词来自 Waindigo/Install/20150313.php第 758 行,以便它开始 ALTER TABLE ... .

关于php - 如何在 MySQL 中忽略表和更改 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44858311/

相关文章:

php - 如何创建一个链接,将用户发送到另一个页面,然后将其转移到与该链接关联的另一个页面?

php - 如何在magento中从productId获取子类别

javascript - fb分享不带og :image dynamically

php - 什么是用于临时/旋转存储的最佳/最快的 MySQL 表模式,例如用于 session 管理?

php - mysql中的空行预防

php - 如何用mysql数据填充html组合框

mysql - 如何将字符串显示为日期?

mysql - 使用自连接优化慢速 MySQL 查询

php - 如何在 post 方法登录中正确使用 MySQLi 函数,这就是我的做法。但有一个错误

php - mysqli_fetch_row 语法困惑