|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官MitchPirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA。曾觉得Windows版本的MySQL存在不克不及利用UDF的BUG诸提交了一个bug呈报。不外
仿佛发明是我弄错了,MySQL的手艺撑持职员给了十分完善的解答,同人人分享
一下。下边是原文复兴:)
Sorrythisisntabug.
BelowIpastedasampleIdidsometimeagoforanotheruser:
Ok.AssumingyouhaveVC++andthesourcedistributionandaserver
running,
IwillcreateaUDFthatreturnsaname:
Note:thesampleisugly,butthepurposehereistoshowyouhow
tohandletheUDF.
-Openthemysqld.dswworkspace.
-AddNewPRojecttotheworkspace
-Projectname:my_udf
-SelectWin32Dynamic-LinkLibrary
-ClickOK
-SelectAnEmptyDLLproject
-ClickFinish
-ClickOK
-Addanewfilecalledmy_udf.cpptotheproject:
#include<stdlib.h>
#include<winsock.h>
#include<mysql.h>
extern"C"{
char*my_name(UDF_INIT*initid,UDF_ARGS*args,char*is_null,
char*error);
}
char*my_name(UDF_INIT*initid,UDF_ARGS*args,char*is_null,
char*error)
{
char*me="myname";
returnme;
}
-TypeCtrl+Nfortocreateanewfile.
-Selecttexttype
-Filename:my_udf.def
-Edittheabovefilewiththebelowcontents:
LIBRARYUDF_EXAMPLE
DESCRipTIONExampleUsingUDFwithVC++
VERSION1.0
EXPORTS
my_name
-RightClickthemy_udfprojectandselectSettings
-ClicktheC/C++tab
-SelectGeneralintheCategoryCombo
-AddthemacroHAVE_DLOPENtothePreProcessordefinition
-SelectPreprocessorintheCategoryCombo
-Addtheincludepathtothetextbox:AdditionalIncludedirectories
e.g:../include
-PressF7fortobuildtheDLL.
-Copythemy_udf.dlltotheenvironmentpathdirectory:
winntsystem32forexample.
-Startthemysqlclientandissue:
C:mysql-udfin>mysql-uroot-p
EnterpassWord:
WelcometotheMySQLmonitor.Commandsendwith;org.
YourMySQLconnectionidis2toserverversion:3.23.52-max-nt
Typehelp;orhforhelp.Typectoclearthebuffer.
mysql>CREATEFUNCTIONmy_nameRETURNSSTRINGSONAME"my_udf.dll";
QueryOK,0rowsaffected(0.08sec)
mysql>selectmy_name();
mysql>dropfunctionmy_name;
QueryOK,0rowsaffected(0.00sec)
多此一举的作下扼要中文申明。
抱愧,这并非一个bug。上面我粘贴一个之前为某个客户做的简例,假定你有了
VC++,源码分发,而且有一个一般运转的MySQL服务器。
我将创立一个UDF它将一个名字:
注重:例子十分大略,目标是让你懂得该怎样处置手头的UDF。
-翻开mysqld.dsw事情区。
-增加新项目到这个事情区
-Projectname:my_udf//项目称号:my_udf
-选择Win32Dynamic-LinkLibrary//Win32静态毗连库
-点击OK
-选择AnEmptyDLLproject//一个空DLL项目
-点击Finish
-点击OK
-增加新文件my_udf.cpp到项目中:
#include<stdlib.h>
#include<winsock.h>
#include<mysql.h>
extern"C"{
char*my_name(UDF_INIT*initid,UDF_ARGS*args,char*is_null,
char*error);
//兼容C
}
char*my_name(UDF_INIT*initid,UDF_ARGS*args,char*is_null,
char*error)
{
char*me="myname";
returnme;
//挪用此UDF将前往myname
}
-按Ctrl+N来创立一个新文件。
-选择text范例
-Filename:my_udf.deffile://文件名:my_udf.def
-依照下边的内容编纂文件。
LIBRARYUDF_EXAMPLE
DESCRIPTIONExampleUsingUDFwithVC++
VERSION1.0
EXPORTS
my_name
-右击my_udf项目并选择Settings
-点C/C++选项卡
-选择General
-增加宏HAVE_DLOPE到预处置器界说
-选择Preprocessor
-增加头文件路径:AdditionalIncludedirectories
比方:../include
-按F7往编译成DLL.
-复制my_udf.dll到情况变量path界说过的目次
好比winntsystem32。
-翻开mysql客户端
C:mysql-udfin>mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;org.
YourMySQLconnectionidis2toserverversion:3.23.52-max-nt
Typehelp;orhforhelp.Typectoclearthebuffer.
mysql>CREATEFUNCTIONmy_nameRETURNSSTRINGSONAME"my_udf.dll";
QueryOK,0rowsaffected(0.08sec)
mysql>selectmy_name();
mysql>dropfunctionmy_name;
QueryOK,0rowsaffected(0.00sec)
ok!接待人人来MySQL板交换UDF计划履历!我的电子邮件是HeartIcy@163.com,
手机13706410308。同时,我们MySQL板筹办入手下手体系化延续性翻译MySQL文档,
但愿人人多多撑持配合完成这一项目。
HeartIcy
2003年5月17日于中国济南
如果你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你可以遵循GPL协议使用MySQL。然而,如果你的项目不是在GPL协议下的话,你必须为使用MySQL来支付许可费用,或者你可能因为这个因素而将你的项目改为遵循GPL。 |
|