c++ - MySQL 在 DROP FUNCTION 上崩溃

标签 c++ mysql

我已经通过 CREATE FUNCTION 命令创建了一个 UDF,现在当我尝试删除它时服务器崩溃了。根据docs ,这是一个已知问题:

To upgrade the shared library associated with a UDF, issue a DROP FUNCTION statement, upgrade the shared library, and then issue a CREATE FUNCTION statement. If you upgrade the shared library first and then use DROP FUNCTION, the server may crash.

它确实崩溃了,之后任何删除该函数的尝试都崩溃了,即使我从插件目录中完全删除了 DLL。在开发过程中,我不断地替换定义 UDF 函数的库。我今天已经从头开始重新安装了一次 MySQL,并且不想再这样做了。除了更加小心之外,我还能做些什么吗?手动清理 mysql.* 表以删除该函数?

编辑:经过一些修补,数据库似乎已经进入崩溃模式,直到我删除了有问题的 DLL,然后发出 错误代码:1305:FUNCTION [schema].[functionName] does not存在。如果我尝试以 root 身份删除该函数,我会收到相同的消息,但没有模式前缀。

SELECT * from mysql.func 显示函数。如果我手动删除记录,我会得到相同的 1305 错误。

最佳答案

mysql 架构中的系统表中的大部分数据在第一次接触时缓存在内存中。之后,除非重启服务器,否则手动修改表可能不会达到预期的效果。

对于授权表,提供了一种刷新任何缓存数据的机制 -- FLUSH PRIVILIGES -- 但对于其他表,如 func 和时区表,确保将对表的手动更改全部考虑在内的唯一确定方法是重新启动服务器进程。

关于c++ - MySQL 在 DROP FUNCTION 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069935/

相关文章:

php - 如何告诉 php 计算数据并从数据库中 +/- 它以获得新数字

java - sql数据与java的连接

Mysql 子选择与 SUM() 和分组依据

c++ - 在启用自动(基于扩展)选项的情况下,IAR 无法正确编译 C++ 文件

c++ - 是否可以在 C++ 中将模板与其参数分开?

c++ - 重新加密加密数据文件生成解密输出

c++ - 应用程序在 Eclipse 中编译,但在 Qt 中出现 'undefined reference errors'

c++ - 具有 NDK 和大量 C++ 依赖项的 Android Studio 2.3.3 项目卡在 `Building symbols`

c++ - Stack Overflow 深度优先搜索

mysql - mysql 查询中的动态值