错误 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
您正在使用cygwin
或32 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)