错误 1126 (HY000): 无法打开共享库 'lib_mysqludf_sys.so' (errno: 193)

Posted

技术标签:

【中文标题】错误 1126 (HY000): 无法打开共享库 \'lib_mysqludf_sys.so\' (errno: 193)【英文标题】:ERROR 1126 (HY000): Can't open shared library 'lib_mysqludf_sys.so' (errno: 193 )错误 1126 (HY000): 无法打开共享库 'lib_mysqludf_sys.so' (errno: 193) 【发布时间】:2015-04-22 22:00:05 【问题描述】:

我正在使用在 32 位 Microsoft Windows XP(专业版 2002 Service Pack 3)上运行的 mysql 5.6.11。我有兴趣安装 MySQL sys_exec UDF。

以下命令,

mysql> SHOW VARIABLES LIKE 'plugin_dir';

显示以下插件位置。

+---------------+-----------------------------------------------------+
| Variable_name | Value                                               |
+---------------+-----------------------------------------------------+
| plugin_dir    | C:\Program Files\MySQL\MySQL Server 5.6\lib\plugin\ |
+---------------+-----------------------------------------------------+

我粘贴lib_mysqludf_sys.so 的位置。然后运行以下命令,

CREATE FUNCTION sys_exec RETURNS INT SONAME 'lib_mysqludf_sys.so';

从 MySQL 命令行导致以下错误(在以 root 用户登录并选择了已创建的数据库之后)。

错误 1126 (HY000): 无法打开共享库 'lib_mysqludf_sys.so' (错误号:193)

如何解决这个错误?

C:\WINDOWS\system32 下是否需要msvcp110.dll?它在那里不可用。但是,文件msvcp100.dll 位于C:\WINDOWS\system32 下。

【问题讨论】:

'lib_mysqludf_sys.so' 是一个 Linux 共享库。对于 Windows,您需要将其编译为 Windows .dll。另外:Msvcp110.dll 或 msvcp100.dll 是两个不同的文件,用于 Microsoft Visual C 运行时的两个不同版本(分别为 MSVC 10.0 和 11.0)。我不知道他们与让 MySQL UDF 插件正常工作有什么关系。 如何做到这一点?这超出了我的范围,因为我不积极关心后端。 @Tiny 您分享的链接还包括 c 源代码。您需要将 c 源代码编译为 dll(Windows 版本的 linux .so 文件)。操作说明在这里:dev.mysql.com/doc/refman/5.7/en/udf-compiling.html 它有 linux 和 windows 说明,windows 大约在页面下方的 1/3 【参考方案1】:

看起来make.exe 您正在使用cygwin32 bit 运行。如果您使用的是 Netbeans,我建议检查您的工具集合设置(工具-> 选项)。看看你是否在使用 mingw32-make.exe 进行 make 命令。

MYSQL 上编译有点痛苦,因为版本和操作系统之间存在许多移动参数。如果您想从头开始完成所有编译过程,那么以下存储库是一个不错的选择

https://github.com/esabilbulbul/mysql-udf-windows

【讨论】:

【参考方案2】:

您必须创建 .dll 文件而不是创建 .so 文件。 Linux 使用 .so 文件,windows 使用 .dll 文件。

通过运行以下查询检查您的 Mysql 服务器的操作系统。

显示像“version_compile_os”这样的变量

在windows中为相同的操作系统版本创建一个dll文件。

在VS 2010中更改平台步骤如下。

右键项目>>点击配置管理器(右上角)>>平台(如果Mysql服务器是win32则选择Win32如果MySQL服务器是win64则选择x64或win64。)

现在按照您提到的相同步骤正确创建一个 dll 文件。我希望它能正常工作。

【讨论】:

Vinieth,我不确定 mac 的文件格式,但您可以通过执行以下步骤找到。 1.所有插件都安装在插件目录下。要找出插件目录,请运行以下命令。 SHOW VARIABLES LIKE 'plugin_dir' 2. 检查此目录中文件的文件格式。这将是 mac 的文件格式。

以上是关于错误 1126 (HY000): 无法打开共享库 'lib_mysqludf_sys.so' (errno: 193)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - php artisan migrate - SQLSTATE[HY000] [14] 无法打开数据库文件

mysql错误:错误1018(HY000):无法读取'.'的目录(错误号:13)

第 171862 行的错误 23 (HY000):打开文件时资源不足'

MySql:错误 1018(HY000):无法读取 '.' 的目录(错误号:13)

MySQL 错误 [1215] [HY000] - 无法添加外键 [重复]

错误 1728 (HY000): 无法从 mysql.user 加载。该表可能已损坏