老尸 发表于 2015-1-16 22:45:20

MYSQL网页编程之MySQL中文参考手册5(安装MySQL下)

你可以配置MySQL运行在微小的嵌入式应用程序中,处理的数据可能不足1Mb??而你也可以用它来处理数Tb的数据。MySQL获得这种可扩展性的路径之一是通过一个人们所熟知的存储过程,这是一个运行在程序之外的微型、预编译程序。mysql|参考|参考手册|中文
MySQL中文参考手册5(安装MySQL下)
转载译者:晏子

〖前往〗〖转发〗


译者:晏子(clyan@sohu.com)主页:http://linuxdb.yeah.net

4.12Win32注重事项
这节形貌在Win32上安装和利用MySQL,这也在MySQLWin32分发所带的“readme”文件中形貌。

4.12.1在Win32上安装MySQL
假如你没有一个注册的MySQL版本,你应当起首下载共享软件版本,从:

MySQL3.21.29

假如你筹办从一些其他程序毗连MySQL,你也大概必要MyODBC驱动程序。你可在MySQL下载页找到。

安装任何一个分发,在某个空目次解紧缩它而且运转Setup.exe程序。

缺省地,MySQL-Win32被设置安装在“C:mysql”。假如你想要在别的中央安装MySQL,在“C:mysql”安装它,然后将安装移到你想要的中央。假如你真的移走MySQL,你必需经由过程供应选项给mysqld告知mysqld那边的一切统统,利用C:mysqlinmysqld--help显现一切的选项目!比方,假如你挪动MySQL分发到“D:programsmysql”,你必需用D:programsmysqlinmysqld--basedirD:programsmysql来启动mysqld。

用挂号的MySQL版本,你也能够创立一个“C:my.cnf”文件来保留用于MySQL服务器的任何缺省选项。拷贝文件“mysqlmy-example.cnf”到“C:my.cnf”而且编纂它来合用于你的安装。注重你应当用"/"而不是""指定一切的路径。假如你利用“”,你必要指定两次(“”),由于在MySQL中“”是本义字符,见4.15.4选项文件。

4.12.2在Win95/Win98上启动MySQL
MySQL利用TCP/IP把一个客户毗连到一个服务器。(这将同意在你的收集上任何呆板毗连你的MySQL服务器)。因而,你必需在启动MySQL前在你的呆板上安装TCP/IP,你能够在你的WindowsCDROM上找到TCP/IP。

注重:假如你正在利用一个旧的Win95版本(比方OSR2),很有大概你有一个老的Winsock包!MySQL必要Winsock2!你可从微软失掉最新的Winsock。Win98有新的Winsock2库作为缺省,如许上述不合用于Win98。

你能利用2个分歧的MySQL服务器:

mysqld用完全调试和主动存储器分派反省编译
mysqld-opt对Pentium处置器优化。

下面两个应当在任何>=i386的Intel处置器上事情。

为了启动mysqld服务器,你应当启动一个MSDOS窗口并键进:

C:mysqlinmysqld
这将在一个没有窗口的背景启动mysqld。

你能够如许杀逝世MySQL服务器,实行:

C:mysqlinmysqladmin-urootshutdown
注重Win95/Win98不撑持定名管道的创立。在Win95/Win98上,你只能利用定名管道毗连运转在一个NT服务器上的远程MySQL。

4.12.3在NT上启动MySQL
Win95/Win98大节也合用于在NT上的MySQL,有以下不同:

为了是MySQL用TCP/IP事情,你必需安装服务包3(servicepack3)(或更新)!

关于NT,服务器名字是mysqld-nt。一般你应当在NT上安装MySQL作为一种服务:

C:mysqlinmysqld-nt--install
(你能够在NT上利用mysqld或mysqld-opt服务器,可是那些不克不及作为一种服务启动或利用定名管道。)

你能够用以下命令启动和中断MySQL服务:

NETSTARTmysql
NETSTOPmysql

注重在这类情形下,你不克不及对mysqld-nt利用任何其他选项!

假如你必要用任何选项启动mysqld-nt,你也能够作为在NT上的一个自力程序运转mysqld-nt!假如你在NT上没有选项启动mysqld-nt,mysqld-nt实验启动本人作为一种有默许选项的服务。假如你中断了mysqld-nt,你必需用NETSTARTmysql启动它。

服务用MySql名字被安装,一旦安装,它必需利用服务把持办理器(SCM)有用程序启动服务(在把持面板中找到)或利用NETSTARTMySQL命令。假如必要任何选项,在你启动MySQL服务前必需作为SCM有用程序的“启动参数”指定它们。一旦运转,可以使用mysqladmin或从SCM有用程序或利用命令NETSTOPMySQL中断mysqld-nt。假如你利用SCM中断mysqld-nt,SCM有一条关于mysqldshutdownnormally奇异的动静,看成为一种服务运转时,mysqld-nt没有把持台的存取权限,以是没有动静能够瞥见。

在NT上你能够失掉以下服务毛病动静:

PermissionDenied(权限回绝)意味着它不克不及找到mysqld-nt.exe
CannotRegister(不克不及挂号)意味着路径是不准确的

假如你作为一种服务安装mysqld-nt有成绩,实验用完全的路径启动它:

C:mysqlinmysqld--install
假如这还不事情,你能经由过程在注册表修改路径使得mysqld-nt准确启动!

假如你不想作为一种服务启动mysqld-nt,你能够以下启动它:

C:mysqlinmysqld-nt--standalone


C:mysqlinmysqld-nt--standalone--debug
最新的版本在“C:mysqld.trace”给你一个调试踪影。

4.12.4在Win32上运转MySQL
MySQL在一切Win32平台上撑持TCP/IP和NT上定名管道。假如客户安装了TCP/IP,缺省是对NT上的当地毗连利用定名管道而对一切其他情况利用TCP/IP,主机名指定利用哪一个协定:

主机名协定
空(没有)在NT上,起首实验定名管道;假如它不事情,利用TCP/IP。在Win95/Win98上,利用TCP/IP。
.定名管道
localhostTCP/IP到以后主机
主机名TCP/IP

经由过程指天命名管道--pipe选项,你能够强迫一个MySQL客户利用定名管道。利用--socket选项指定管道的名字。

经由过程实行以下命令,你能测试MySQL是不是正在事情:

C:mysqlinmysqlshow
C:mysqlinmysqlshow-urootmysql
C:mysqlinmysqladminversionstatusproc
C:mysqlinmysqltest

假如在Win95/Win98上mysqld很慢地回覆毗连,大概你的DNS有成绩。在这类情形中下,用--skip-name-resolve启动mysqld而且在MySQL受权表中仅利用localhost和IP数字。在你毗连运转在NT上一个mysqld-nt的MySQL服务器时,利用--pipe指天命名管道利用的参数,你也能避开DNS,对年夜多半MySQL客户是可行的。

有2个版本的MySQL命令行工具:

mysql用原生Win32编译,它供应很有无限的文本编纂才能。
mysqlc用CygnusGNU编译器和库编译,它供应readline编纂。

假如你想利用mysqlc.exe,你必需拷贝“C:mysqllibcygwinb19.dll”到“windowssystem”(或相似的中央)。

在Win32上缺省的权限给一切当地用户以一切数据库的完整权限。为了使MySQL更平安,你应当为每一个用户设置口令并删除mysql.user中有Host=localhost和User=的行。

你也应当为root用户增添一个口令:(以下例子经由过程删除匿名用户,同意任何人存取“测试”数据库)

C:mysqlinmysqlmysql
mysql>DELETEFROMuserWHEREHost=localhostANDUser=;
mysql>QUIT
C:mysqlinmysqladminreload
C:mysqlinmysqladmin-urootpasswordyour_password

在你设置了口令今后,假如你想要关失落mysqld服务器,你能利用这个命令做到:

mysqladmin--user=root--password=your_passwordshutdown
假如你正在利用在windows下的MySQL共享软件版本,下面的命令将以parseerrornearSETOPTIONpassword的毛病而失利,这是由于,这是共享软件版本,它基于MySQL3.21,没有SETPASSWORD命令。

对共享软件版本,你能以下设置root用户口令:

C:mysqlinmysqlmysql
mysql>UPDATEuserSETpassword=PASSWORD(yourpassword)WHEREuser=root;
mysql>QUIT
C:mysqlinmysqladminreload

有注册的MySQL版本,你能很简单地用GRANT和REVOKE命令增添新用户和变动权限,见7.26GRANT和REVOKE句法。对Windows的共享软件版本,必需利用INSERT、UPDATE和DELETE在mysql数据库中的一个表来办理用户和他们的权限,见6.13存取回绝(Accessdenied)的毛病缘故原由。

4.12.5用SSH从Win32毗连一个远程MySQL
这是一个关于如何用SSH失掉一个平安的毗连远程MySQL服务器的注重事项(DavidCarlson)。

在你的windows呆板上安装SSH客户-我利用了一个来自http://www.doc.ic.ac.uk/~ci2/ssh/的收费SSH客户。其他有效的链接:http://www.npaci.edu/Security/npaci_security_software.html和http://www.npaci.edu/Security/samples/ssh32_windows/index.html.

启动SSH。设置主机名字=你的MySql服务器名或IP地点,设置userid=你的用户名登录到你的服务器。
点击“localforwords”。设定localport:3306,host:localhost,remoteport:3306
保留统统,不然下次你将必需再做一遍。
用SSH登录到你的服务器。
启动一些ODBC使用程序(比方Access)。
制造一个新文件而且用ODBC驱动程序链接到mySQL,就像你一般做的一样,除对服务器用用户“localhost”。



弄定。它对一个间接的因特网毗连事情得很好。我有些成绩,SSH与我的Win95收集和Wingate有抵触-可是那将是张贴在其他软件公司的用户组的话题!

4.12.6MySQL-Win32与UnixMySQL对照
MySQL-Win32如今已证实了本人很不乱。这个版本得MySQL有与对应的Unix版本一样的特性,除上面:

Win95和线程
Win95为每一个线程的创立丧失约莫200个字节的内存。因而,假如你举行很多毗连,你不该该在Win95运转mysqld很长工夫,由于MySQL的每一个毗连都创立一个新线程!WinNT和Win98不克不及容忍这个bug。
堵塞式读(blockingread)
MySQL为每一个毗连利用一个堵塞式读取,这意味着:
一个毗连将不在8个小时后主动被断开,就像MySQL的Unix版本所产生的。
假如一个毗连“挂起”,不杀逝世MySQL就不成能冲破它。
mysqladminkill在一个就寝的毗连大将不事情。
只需有就寝的毗连,mysqladminshutdown不克不及半途中止。
我们企图在不久的未来修改它。

UDF函数
临时MySQL-Win32不撑持用户可界说函数。
DROPDATABASE
你不克不及丢弃一个正在被某些线程利用的数据库。
从义务办理器杀逝世MySQL
在Windows95上,你不克不及从义务办理器或用shutdown有用程序杀逝世MySQL。你必需用mysqladminshutdown封闭它。
巨细写辨别的名字
文件名在Win32上是疏忽巨细写的,因而Win32上的MySQL数据库和表的名字也是疏忽巨细写的。独一的限定是数据库和表的名字必需在全部一个给定的语句中巨细写是一样的,由于它用my_table和MY_TABLE都指向统一个表子,以下查询将不事情:
SELECT*FROMmy_tableWHEREMY_TABLE.col=1;

“”目次字符
在Win95上的路径名构成由“”字符分开,它在MySQL中也是本义字符。假如你正在利用LOADDATAINFILE或SELECT...INTOOUTFILE,你必需用两个“”字符或利用Unix作风的文件名“/”字符:
LOADDATAINFILE"C:mpskr.txt"INTOTABLEskr;
SELECT*FROMskrINTOOUTFILEC:/tmp/skr.txt;

Cantopennamedpipe毛病
假如你利用NT上的MySQL-Win32共享软件版本,用最新的mysql客户,你将失掉以下毛病:
error2017:cantopennamedpipetohost:.pipe...

这是由于NT上MySQL正式版本缺省地利用定名管道。你能经由过程为新MySQL客户利用--host=localhost选项或创立一个包括以下信息的文件“C:my.cnf”来制止这个毛病:


host=localhost

Accessdeniedforuser毛病
在会见在统一呆板上的一个MySQL服务器时,假如你失掉Accessdeniedforuser:some-user@unknowntodatabasemysql的毛病,这意味着MySQL不克不及准确注释你的主机名。为了修改它,你应当创立一个文件“windowshosts”,有以下信息:
127.0.0.1localhost
关于大概想要匡助我们做好Win32版本的任何人,这里有的一些开放的成绩:

制造一个单用户MYSQL.DLL服务器。这应当包含一个尺度MySQL服务器的统统,除线程创立外。这将使MySQL在不必要一个真实的客户机/服务器和不必要从其他主机存取服务器的使用程序时更简单利用。
为MySQL安装增添一些大度的“start”和“shutdown”图标。
为MySQL启动选项创立造一个工具办理注册表条目。注册表条目标度缺已被编码进mysqld.cc,可是它应当从头编码而加倍面向“参数”,该工具应当也能更新“my.cnf”文件,假如用户对照喜好利用它而不是注册表。
当用--install挂号mysqld作为一种服务(在NT上)时,假如你也能够在命令行上增添缺省选项,它将更好,今朝办理举措是更新“C:my.cnf”文件。
当你挂起一个运转Win95的膝上盘算机时,当膝上盘算机被恢复时,mysqld保卫程序不承受新毗连。我们不晓得这是不是Win95、TCP/IP或MySQL的成绩。
能从义务办理器杀逝世mysqld将相对是功德,今朝,你必需利用mysqladminshutdown。
移植用在mysql命令行工具的readline到Win32。
尺度的GUI版本MySQL客户(mysql、mysqlshow、mysqladmin和mysqldump)将更好。
假如在“net.c”中的套接字“读”和“写”函数是可中止的,那将更好。这将有大概在Win32上用mysqladminkill杀逝世翻开的线程。
制造有关哪些Windows程序能事情在MySQL-Win32/MyODBC和必需做甚么在能让他们事情的文档。
mysqld老是在“C”处启动而不在缺省地址,我们想让mysqld利用以后地址用于排序按次。
移植sqlclient到Win32(几近完成)并到场更多的特性!
把更多的选项加到MysqlManager。
在服务器和客户之间改动通信协定,利用Windows外部通信而不是套接字和TCP/IP。
用.DLL完成UDF函数。
增添宏以利用由Win32供应的更快的对线程平安的增添/削减办法。
其他Win32特定成绩在MySQL-Win32分发的“README”文件中形貌。

4.13OS/2注重事项
MySQL利用太多的翻开文件。因而,你应当增添相似上面的器材到你的“CONFIG.SYS”文件:

SETEMXOPT=-c-n-h1024
假如你不如许做,你将大概碰着以下毛病:

Filexxxxnotfound(Errcode:24)
当OS/2Warp3上利用MySQL时,请求FixPack29或以上。用OS/2Wrap4,请求FixPack4或以上。这是Pthreads库的一个请求。MySQL必需安装在撑持长文件名的一个分区上,如HPFS、FAT32等等。

“INSTALL.CMD”剧本必需从OS/2本人的“CMD.EXE”运转而且不克不及事情在替换品如“4OS2.EXE”。

“scripts/mysql-install-db”剧本已被从头定名了:它如今挪用“install.cmd”而且是一个REXX手迹,将安装缺省的MySQL平安设置并为MySQL创立WorkPlaceShell图标。

静态模块撑持经由过程编译但没有充实测试,静态模块应当利用Pthreads运转时候库编译。

gcc-Zdll-Zmt-Zcrtdll=pthrdrtl-I../include-I../regex-I..
-oexampleudf_example.cc-L../lib-lmysqlclientudf_example.def
mvexample.dllexample.udf

注重:因为OS/2的限定,UDF模块名字的词干不克不及凌驾8个字符。模块被存储在“/mysql2/udf”目次;safe-mysqld.cmd剧本将把这个目次放在BEGINLIBPATH情况变量中。当利用UDF模块时,指定的扩大名被疏忽--它被假定为“.udf”。比方,在Unix上,共享模块大概被定名为“example.so”而且你能够象如许从它装载函数:

CREATEFUNCTIONmetaphonRETURNSSTRINGSONAME"example.so";

恰是OS/2,模块将被定名为“example.udf”,可是你不指定模块扩大名:
CREATEFUNCTIONmetaphonRETURNSSTRINGSONAME"example";
4.14TcX二进制代码
作为一种服务,TcX供应一套MySQL的二进制分发,它在TcX或在客户友爱地授与我们会见他们呆板的权限的站点上被编译。

这些分发用scripts/make_binary_distribution天生而且用以下编译器和选项设置:

SunOS4.1.42sun4cwithgcc2.7.2.1
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql--disable-shared
SunOS5.5.1sun4uwithegcs1.0.3a
CC=gccCFLAGS="-O6-fomit-frame-pointer"CXX=gccCXXFLAGS="-O6-fomit-frame-pointer-felide-constructors-fno-exceptions-fno-rtti"./configure--prefix=/usr/local/mysql--with-low-memory
SunOS5.6sun4uwithegcs2.90.27
CC=gccCFLAGS="-O6-fomit-frame-pointer"CXX=gccCXXFLAGS="-O6-fomit-frame-pointer-felide-constructors-fno-exceptions-fno-rtti"./configure--prefix=/usr/local/mysql--with-low-memory
SunOS5.6i86pcwithgcc2.8.1
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql--with-low-memory
Linux2.0.33i386withpgcc2.90.29(egcs1.0.3a)
CFLAGS="-O6-mpentium-mstack-align-double-fomit-frame-pointer"CXX=gccCXXFLAGS="-O6-mpentium-mstack-align-double-fomit-frame-pointer-felide-constructors-fno-exceptions-fno-rtti"./configure--prefix=/usr/local/mysql--enable-assembler--with-mysqld-ldflags=-all-static
SCO3.2v5.0.4i386withgcc2.7-95q4
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql
AIX24withgcc2.7.2.2
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql
OSF1V4.0564alphawithgcc2.8.1
CC=gccCFLAGS=-OCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql--with-low-memory
Irix6.3IP32withgcc2.8.0
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql
BSDIBSD/OS3.1i386withgcc2.7.2.1
CC=gccCXX=gccCXXFLAGS=-O./configure--prefix=/usr/local/mysql
BSDIBSD/OS2.1i386withgcc2.7.2
CC=gccCXX=gccCXXFLAGS=-O3./configure--prefix=/usr/local/mysql
任何有比上述设置更优的选项的人老是能把他们寄给开辟者邮件列表中。

MySQL3.22之前的RPM分发是用户奉献的,自3.22入手下手,一些RPM是TcX天生的。

4.15安装前期的设置和测试
一旦你已安装了MySQL(从一个二进制代码或源代码分发),你必要初始化受权表,启动服务器而且包管服务器准确运转。你也能够但愿布置服务器在你的体系开机和关机时主动地被启动和中断。

一般,对从源代码分发的安装,你象如许安装受权表并启动服务器:

shell>./scripts/mysql_install_db
shell>cdmysql_installation_directory
shell>./bin/safe_mysqld&

对二进制分发,如许做:

shell>cdmysql_installation_directory
shell>./bin/mysql_install_db
shell>./bin/safe_mysqld&

测试在MySQL刊行的顶级目次是最简单举行的。对二进制分发,这是你的安装目次(典范地相似“/usr/local/mysql”)。对源代码分发,这是你的MySQL源代码树的主目次。

在本大节和今后的大节中,以下命令中,BINDIR是到程序如mysqladmin和safe_mysqld被安装地址的路径。对二进制分发,是在分发内的“bin”目次。对源代码分发,BINDIR多是“/usr/local/bin”,除非在你运转configure时指定了一个“/usr/local”之外的安装目次。EXECDIR是mysqld服务器安装的地址,对二进制分发,这与BINDIR一样。对源代码分发,EXECDIR多是“/usr/local/libexec”。

测试具体鄙人面形貌:

假如需要,启动mysqld服务器而且创建初始MySQL受权表,包括决意用户怎样被同意毗连服务器的权限。这一般用mysql_install_db剧本做:
shell>scripts/mysql_install_db

典范地,mysql_install_db仅在你第一次安装MySQL时必要运转,因而,假如你正在晋级现有的安装,你能够跳过这一步。(但是,mysql_install_db的利用相称平安,而且将不更新已存在的任何表,因而假如你是不克不及一定做甚么,你老是能够运转mysql_install_db。)mysql_install_db在mysql数据库里创立6个表(user、db、host、tables_priv、columns_priv和func),初始权限的形貌在6.10设置初始MySQL权限给出。复杂地说,这些权限同意MySQLroot用户做任何事变,而且同意任何人创立立或利用一个名字以test或test_入手下手的数据库。假如你不设置权限表,当你启动服务器时,以下毛病将在日记文件呈现:

mysqld:Cantfindfile:host.frm

假如你不是经由过程分明地实行./bin/safe_mysqld来启动MySQL,上述毛病大概也产生在MySQL二进制代码分发!你大概必要作为root运转mysql_install_db,但是,假如你喜好,假如用户能在数据库目次读而且写文件,你能够作为一个非特权(非--root)用户运转MySQL服务器。作为一个非特权用户运转MySQL的指令在18.8如何作为一个一样平常用户运转MySQL中给出。假如你有mysql_install_db的成绩,见4.15.1运转mysql_install_db的成绩。由于mysql_install_db在MySQL刊行中,另有一些其他办法运转它:

你大概想在运转mysql_install_db前编纂它,改动被安装到受权表中的初始权限。假如你想要在有不异权限的良多呆板安装MySQL,这很有效。在这类情形下,你大概应当只必要增添几个分外的INSERT语句到mysql.user和mysql.db表中!
假如你想要在安装受权表后改动甚么,你能够运转mysql_install_db,然后利用mysql-urootmysql作为MySQLroot用户毗连受权表,收回SQL语句间接修正受权表。
在已创立了受权表后,有大概全体再次创立。假如你已安装了表可是随后又想要在编纂mysql_install_db今后再创立,你大概想要如许做。
关于这些选项的更多信息,见6.10创建初始MySQL权限。

象如许启动MySQL服务器:
shell>cdmysql_installation_directory
shell>bin/safe_mysqld&

假如你启动服务器的成绩,见4.15.2启动MySQL服务器的成绩.

利用mysqladmin证明服务器正在运转。以下命令供应复杂的测试来反省服务器启动和毗连的应对:
shell>BINDIR/mysqladminversion
shell>BINDIR/mysqladminvariables

从mysqladminversion的输入依据你的平台和MySQL版本略有分歧,可是应当相似以下显现:
shell>BINDIR/mysqladminversion
mysqladminVer6.3Distrib3.22.9-beta,forpc-linux-gnuoni686
TCXDatakonsultAB,byMonty

Serverversion3.22.9-beta
Protocolversion10
ConnectionLocalhostviaUNIXsocket
TCPport3306
UNIXsocket/tmp/mysql.sock
Uptime:16sec

Runningthreads:1Questions:20Reloads:2Opentables:3

为了感到你能用BINDIR/mysqladmin做其他事变,用--help选项挪用它。

证明你能关失落服务器:
shell>BINDIR/mysqladmin-urootshutdown

证明你能重启服务器。利用safe_mysqld或间接挪用mysqld举行,比方:
shell>BINDIR/safe_mysqld--log&

假如safe_mysqld失利,从MySQL安装目次实验运转它(假如你已不在那边)。假如还不事情,见4.15.2启动MySQL服务器的成绩。

运转一些复杂的测试证明服务器正在事情。输入应当相似于上面所显现的:
shell>BINDIR/mysqlshow
+-----------+
|Databases|
+-----------+
|mysql|
+-----------+

shell>BINDIR/mysqlshowmysql
Database:mysql
+--------------+
|Tables|
+--------------+
|columns_priv|
|db|
|func|
|host|
|tables_priv|
|user|
+--------------+

shell>BINDIR/mysql-e"selecthost,db,userfromdb"mysql
+------+--------+------+
|host|db|user|
+------+--------+------+
|%|test||
|%|test_%||
+------+--------+------+

在“sql-bench”目次(在MySQL安装目次下)下另有基准测试套件,你能用来对照在分歧的平台上MySQL体现怎样。“sql-bench/Results”目次包括对分歧的数据库战争台很多运转了局。为了运转一切的测试,实行这些命令:


shell>cdsql-bench
shell>run-all-tests

假如你没有“sql-bench”目次,你大概在对二进制分发利用一个RPM(源代码分发的RPM包含基准目次)。在这类情形下,在你能利用它之前,你必需起首安装基准套件。从MySQL3.22入手下手,着名为“mysql-bench-VERSION-i386.rpm”的基准RPM包,它们包括基准代码和数据。假如你有源代码分发,你也能够在“tests”子目次下运转测试。比方,运转“auto_increment.tst”,如许做:

shell>BINDIR/mysql-vvftest<./tests/auto_increment.tst

希冀的了局被显现在“./tests/auto_increment.res”文件中。

4.15.1运转mysql_install_db的成绩
这节列出在你运转mysql_install_db时,你大概碰见的成绩:

mysql_install_db不安装受权表
在显现以下动静今后,你能够发明mysql_install_db不克不及安装受权表并停止:
startingmysqlddaemonwithdatabasesfromXXXXXX
mysqldaemonended

在这类情形下,你应当很当心地查验日记文件!日记文件应当位于目次“XXXXXX”,用毛病动静定名,而且应当指出为何mysqld没启动。假如你不睬解产生的事变,当你利用mysqlbug邮寄一份毛病呈报时,包括日记文件!见2.3如何呈报毛病或成绩。

已有一个mysqld保卫程序在运转
在这类情形下,你大概基本不用运转mysql_install_db。当你第一次安装MySQL时,你必需只运转mysql_install_db一次。
当一个保卫历程正在运转时,安装第二个mysqld保卫历程不事情
这只要在当你已有已存在的MySQL安装可是想要把新安装放在一个分歧的中央时才会产生(比方,为了测试大概大概你复杂地想要同时运转2个安装)。一般当你试着运转第二个服务器时,产生的成绩是它试图和旧一个利用一样的套接字和端口。在这类情形下,你将失掉毛病动静:Cantstartserver:BindonTCP/IPport:Addressalreadyinuse或Cantstartserver:Bindonunixsocket...你能用一个分歧的套接字和端口启动新的服务器,以下:
shell>MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell>MYSQL_TCP_PORT=3307
shell>exportMYSQL_UNIX_PORTMYSQL_TCP_PORT
shell>scripts/mysql_install_db
shell>bin/safe_mysqld&

在这今后,你应当编纂你的服务器引诱剧本手迹用分歧的套接字和端口启动两个保卫历程。比方,它能挪用safe_mysqld两次,可是对每次挪用利用分歧的--socket、--port和--basedir选项。

你没有“/tmp”的写权限
假如你没有写权限在缺省中央(在“/tmp”里)创立一个套接字文件,或没有在“/tmp”创立一时文件的允许,在运转mysql_install_db或当启动或利用mysqld时,你将失掉一个毛病。你能够以下地指定一个分歧的套接字和一时目次:
shell>TMPDIR=/some_tmp_dir/
shell>MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell>exportTMPDIRMYSQL_UNIX_PORT

“some_tmp_dir”应当是你有写允许的某个目次的路径。在这今后,你应当能运转mysql_install_db而且这些命令启动服务器:

shell>scripts/mysql_install_db
shell>BINDIR/safe_mysqld&

mysqld立即溃散
假如你正在运转RedHat5.0,有一个比2.0.7-5旧的glibc版本,你应当包管你安装了glibc一切补钉!在MySQL邮件档案中有良多关于它的信息。邮件档案的链接可在联机MySQL文档页失掉。也可见4.11.5Linux注重事项(一切Linux版本)。你也能够手工启动mysqld,利用--skip-grant选项而且增添利用mysql自己的权限信息:
shell>BINDIR/safe_mysqld--skip-grant&
shell>BINDIR/mysql-urootmysql

从mysql,手工实行在mysql_install_db内里的SQL命令。包管你随后运转mysqladminreload告知服务器再装进受权表。

4.15.2启动MySQL服务器的成绩
一般,你用3个办法之一启动mysqld服务器:

经由过程挪用mysql.server。这个剧本次要用于体系启动和封闭,更周全的形貌在4.15.3主动启动和中断MySQL。
经由过程挪用safe_mysqld,它试图为mysqld决意准确的选项并然后用那些选择运转它。
经由过程间接挪用mysqld。
不管你利用哪一个办法启动服务器,假如它没有准确启动,反省日记文件看你是不是能发明为何。日记文件位于数据目次(对二进制分发通常为“/usr/local/mysql/data”,对源代码分发是“/usr/local/var”)。用“host_name.err”和“host_name.log”情势的名字在数据目次下查找文件,这里host_name是你服务器主机的名字,然后反省这些文件的最初几行:

shell>tailhost_name.err
shell>tailhost_name.log

当mysqld保卫历程启动时,它把目次改动到数据目次。这是它希冀写日记文件和pid(历程ID)文件的中央,和它希冀在那儿找到数据库。

数据目次地址是在分发编译时定逝世的。但是,假如mysqld希冀它在你的体系上其他某个中央找到数据目次,它将事情不一般。假如你有不准确路径的成绩,你可以使用--help选项挪用mysqld,找到mysqld同意甚么选项和缺省路径设置是甚么。你能经由过程指定准确的路径作为mysqld命令行参数来掩盖缺省值。(这些选择也能用于safe_mysqld。)

一般你应当只必要告知mysqld基础目次,在它上面安装MySQL。你能够用--basedir选项做到,你也能利用--help反省改动路径选项的效果(注重,--help必需是mysqld命令的最初选项)。比方:

shell>EXECDIR/mysqld--basedir=/usr/local--help

一旦你断定你想要的路径设置,不必--help选项启动服务器。

假如你失掉以下毛病,它意味着mysqld正在试图利用某些其他程序(或其他mysqld服务器)已正在利用TCP/IP端口或套接字:

Cantstartserver:BindonTCP/IPport:Addressalreadyinuse

Cantstartserver:Bindonunixsocket...

利用ps包管你没有别的一个mysqld服务器正在运转。假如你不克不及发明其他运转的服务器,你能够实验实行命令telnetyour-host-nametcp-ip-port-number而且按几回RETURN键,假如你没有失掉一个毛病动静,像telnet:Unabletoconnecttoremotehost:Connectionrefused,某个器材正在利用mysqld正在试图利用的TCP/IP端口,见4.15.1运转mysql_install_db的成绩和19.3在统一台呆板上运转多个MySQL服务器。

safe_mysqld剧本被编写以便能一般地启动一个从MySQL源代码或二进制代码版本安装的服务器,就算这些在略微分歧的地址安装服务器。safe_mysqld但愿这些前提之一是真的:

服务器和数据库能在绝对safe_mysqld被挪用的目次下找到。safe_mysqld在它的事情目次上面找“bin”和“data”目次(对二进制分发)或“libexec”和“var”目次(对源代码分发)。假如你从你的MySQL安装目次(比方,对二进制分发为“/usr/local/mysql”)实行safe_mysqld,这个前提应当满意。
假如服务器和数据库不克不及在绝对其事情目次找到,safe_mysqld试图经由过程相对路径找到他们。典范的地址是“/usr/local/libexec”和“/usr/local/var”。实践的地址在机关来自分发的safe_mysqld时断定,假如MySQL安装在一个尺度的地址,他们应当是准确的。
由于safe_mysqld将试图在绝对它本人的事情目次下找到服务器和数据库,你能够在任何中央安装MySQL的二进制分发,只需你从MySQL安装目次启动safe_mysqld便可:

shell>cdmysql_installation_directory
shell>bin/safe_mysqld&

假如safe_mysqld失利,乃至在从MySQL安装目次挪用时,你能够修正它以便利用到mysqld路径而且对你的体系的路径选项是准确的。注重,假如在未来你晋级MySQL,你的safe_mysqld修正版本将被掩盖,因而你应当做一个你能从头安装的编纂过的版本的拷贝。

假如mysqld以后正在运转,经由过程实行这个命令,你能发明它正在利用甚么路径设置:

shell>mysqladminvariables



shell>mysqladmin-hyour-host-namevariables

假如safe_mysqld启动服务器可是你不克不及与它毗连,你应当包管你在“/etc/hosts”内里有一个条目,看起来像如许:

127.0.0.1localhost
这个成绩仅产生在没有一个能事情的线程库的体系上而且对该体系MySQL必需设置为利用MIT-pthreads。

4.15.3主动启动和中断MySQL
mysql.server剧本能够被用来启动或中断服务器,经由过程用start或stop参数挪用它:

shell>mysql.serverstart
shell>mysql.serverstop

mysql.server可在MySQL安装目次下的“share/mysql”目次里找到,或在MySQL源代码树的“support-files”目次下找到。

在mysql.server启动服务器之前,它把目次改动到MySQL安装目次,然后挪用safe_mysqld。假如你有在一个非尺度的地址安装的二进制分发,你大概必要编纂mysql.server。修正它,运转safe_mysqld前,cd到准确的目次。假如你想要作为一些特定的用户运转服务器,你能够改动mysql_daemon_user=root利用用其他用户,你也能修正mysql.server把其他选项传给safe_mysqld。

mysql.serverstop经由过程向服务器收回一个旌旗灯号中断它。你可手工实行mysqladminshutdown封闭服务器。

当你入手下手利用MySQL作为临盆使用时,你大概想要增添这些启动而且中断命令到在你的“/etc/rc*文件中得当的中央。注重假如你修正mysql.server,那末假如某个时分你晋级MySQL时,你的修正版本将被掩盖,因而你应当做一个你可从头安装的编纂过的版本的拷贝。

假如你的体系利用“/etc/rc.local”启动内部剧本,你应当增加以下到个中:

/bin/sh-ccd/usr/local/mysql;./bin/safe_mysqld&
你也能够在一个全局“/etc/my.cnf”文件中增添mysql.server的选项。一个典范的“/etc/my.cnf”文件大概看起来像如许:

mysqld]
datadir=/usr/local/mysql/var
socket=/tmp/mysqld.sock
port=3306


user=mysql
basedir=/usr/local/mysql

mysql.server剧本利用以下变量:user、datadir、basedir、bindir和pid-file。
见4.15.4选项文件。

4.15.4选项文件
MySQL3.22能够从选项文件中为服务器和客户读取缺省启动选项。

在Unix上,MySQL从以下文件读取缺省选择:


文件名用处
/etc/my.cnf全局选项
DATADIR/my.cnf服务器特定的选项目
~/.my.cnf用户特定的选项

DATADIR是MySQL的数据目次(典范地对二进制安装是“/usr/local/mysql/data”或对源代码安装是“/usr/local/var”)。注重:这是在设置工夫指定的目次,不是mysqld启动时用--datadir指定的目次!(--datadir在服务器寻觅选项文件的中央有效,由于它之前寻觅他们,它处置任何命令行参数。)

MySQL在Win32上从以下文件读取缺省选项:

文件名用处
windows-system-directorymy.ini
C:my.cnf全局选项
C:mysqldatamy.cnf服务器特定的选项

注重,在Win32上你应当用/而不是指定一切的路径,假如你利用,你必要指定两个,由于在MySQL内里是本义字符。

MySQL试图以上述所列的按次读取选项文件。假如存在多个选项文件,在一个前面文件读取的选项优先于在先前读取的一个文件中指定的统一个选项,在命令行上指定的选项优先于在任何选项文件指定了的选项。有些选择能利用情况变量指定,在命令行或在选项文件指定的选项优先于情况变量。

以下程序撑持选项文件:mysql、mysqladmin、mysqld、mysqldump、mysqlimport、mysql.server、myisamchk和myisampack。

你能利用选项文件指定一个程序撑持的恣意长的选项!用--help选项运转程序可失掉的可用选项的表。

一个选项文件能够包括以下情势的行:

#comment
正文行以“#”或“;”入手下手,空行被疏忽。

group是你想为其设置选项的程序或组的名字。在一个组行后,任何option或set-variable行使用于定名的组,直到选择文件停止或其他组的给出。
option
这等价于在命令行上的--option。
option=value
这等价于在命令行上的--option=value。
set-variable=variable=value
这等价于在命令行上的--set-variablevariable=value。该语法必需被用来设置一个mysqld变量。
client组同意你指定合用于一切MySQL客户的选项(不是mysqld)。这是幻想的组来指定你用来与服务器毗连的口令。(可是包管只是选项文件自己是可读的和可写的。)

注重,对域选项和值,一切头部和尾部空缺主动被删除。你能够在的值串中利用本义按次“”、“”、“
”、“
”、“”和“s”(“s”==空缺)。

这是一个典范的全局选项文件:


port=3306
socket=/tmp/mysql.sock

port=3306
socket=/tmp/mysql.sock
set-variable=key_buffer=16M
set-variable=max_allowed_packet=1M


quick

这是典范的用户选项文件:


#ThefollowingpasswordwillbesenttoallstandardMySQLclients
password=my_password


no-auto-rehash

假如你有一个源代码分发,你将在“support-files”目次下找到一个名为“my-example.cnf”样品设置文件。假如你有二进制分发,在“DIR/share/mysql”目次下查找,在此DIR是MySQL安装目次的路径(通常为“/usr/local/mysql”)。你能够拷贝“my-example.cnf”到你的主目次(从头定名拷贝为“.my.cnf”)来实验。

为了告知一个MySQL程序不读任何选项文件,在命令行上指定--no-defaults作为第一个选项。这必需是第一个选项,不然它将有效!假如你想反省利用哪一个选项,你能够给出--print-defaults选项作为第一个选项。

假如你想要强迫利用一个特定设置文件,你可使用选项--defaults-file=full-path-to-default-file。假如你如许做,只要指定的文件将被读取。

开辟者注重:选项文件的处置复杂地经由过程处置一切在任何命令行前参数的婚配选项来完成(即,在得当的组里的选项),这对利用屡次指定的一个选项的最初实例的程序事情的很好。假如你有如许一个处置多重指定选项但不读选项文件的旧程序,你只必要增添2行授与它那种才能。反省任何尺度的MySQL客户的源代码看如何做。

4.16晋级/升级MySQL时有甚么出格的事变要做?
只需你有MySQL统一个的基本版本,你总能够在一样的系统布局上的分歧版本之间的挪动MySQL表格(form)和数据文件。以后的基本版本是3。假如你经由过程从头编译MySQL改动字符集(也能够改动排序按次),你必需在一切的表上运转myisamchk-r-q,不然你的索引不克不及准确被排序。

假如你偏执于或忧虑新版本,你总能从头定名的旧mysqld为相似于mysqld-old-version-number。那末假如你的新mysqld做一些不测的事变,你能够复杂地关失落它偏重启你的旧mysqld!

当你做一个晋级时,固然你也应当备份你的旧数据库。偶然有点偏执狂是好的!

在晋级后,假如你从头编译客户程碰到成绩,像Commandsoutofsync或不测的中心倾倒,在编译你的程序时,你大概利用了一个旧的头文件或库文件。在这类情形下,你应当反省你的“mysql.h”文件和“libmysqlclient.a”库文件的日期以证明他们来改过的MySQL刊行。假如不是,请从头编译你的程序!

假如你有些成绩,新的mysqld服务器不想启动或你不克不及没有口令毗连,反省你的确没有来自你的旧安装的一些旧的“my.cnf”文件!你能够用program-name--print-defaults反省。假如这输入任何非程序名字的任何器材,你有一个活泼my.cnf文件将能够影响一些事变!

不管什么时候你安装一个新版本的MySQL,从头机关偏重新安装Msql-Mysql-modules分发是一个好主张,出格是在晋级MySQL后,假如你注重到诸如你的一切DBI剧本倾倒中心症状。


4.16.1从一个3.22版本晋级到3.23
MySQL3.23撑持新MyISAM范例和旧ISAM范例的表。你不用须变更你的新式表给3.23利用。缺省地,一切的新表将用范例MyISAM创立(除非你利用--default-table-type=isam选项启动mysqld)。你能够用ALTERTABLE或Perl剧本mysql_convert_table_format将一个ISAM表转换成一个MyISA表。

3.22和3.21客户将毫无成绩地与一个3.23服务器一同事情。

当晋级到3.23时,上面列出你必需注重的事变:

INNER和DELAYED如今是保存字。
FLOAT(X)如今是一个真实的浮点范例。
当声明DECIMAL(length,dec)时,长度参数不再包含一个标记或小数点地位。
一个TIME字符串必需是以下现有格局之一:[[H:]MM:]SS[.fraction]或[[[[H]H]H]MM]SS[.fraction]。
如今,LIKE利用=一样的字符对照划定规矩对照字符串。假如你请求旧的举动,你能够用CXXFLAGS=-DLIKE_CMP_TOUPPER标记编以MySQL。
REGEXP如今对一般(不是二进制的)字符串是疏忽巨细写的。
在你反省/修复表时,对MyISAM表(.MYI),你应当利用myisamchk,而对ISAM(.ISM)表利用isamchk。
假如你想要你的mysqldumps在MySQL3.22和3.23之间兼容,你应当不利用mysqldump的--opt或--full选项。
反省一切对DATE_FORMAT()的挪用,包管在在每一个格局字符前有一个“%”。
mysql_fetch_fields_direct如今是函数(它之前是一个宏)而且它前往一个指向MYSQL_FIELD的指针而不是一个MYSQL_FIELD。
mysql_num_fields()能够不再被用在一个MYSQL*工具上(它如今是一个函数,拿MYSQL_RES*作为一个参数)。相反你如今应当利用mysql_field_count()。
在MySQL3.22,SELECTDISTINCT...的输入几近老是被排序的。在3.23上,你必需利用GROUPBY或ORDERBY取得排序的输入。
假如没有婚配的行,SUM()如今前往NULL,而不是0。这是依照ANSISQL。
新的限定词:CASE、THEN、WHEN、ELSE和END。

4.16.2从一个3.21版本晋级到3.22
没有影响相容性的器材在3.21和3.22之间已改动。独一的缺点是用DATE类范例创立的新表将利用新办法存储日期。你不克不及从一个mysqld旧版本存取这些新字段。

在安装MySQL3.22今后,你应当启动新的服务器而且然后运转mysql_fix_privilege_tables剧本。这将增添你利用GRANT命令所需的新权限。假如你健忘了这个,当你试着利用ALTERTABLE,CREATEINDEX或DROPINDEX时,你将失掉Accessdenied。假如你的MySQL根用户请求一个口令,你应当把它作为一个参数给mysql_fix_privilege_tables。

mysql_real_connect()的CAPI接口改动了。假如你有一个旧的客户程序挪用该函数,你必需放一个0作为新db参数(或为了疾速毗连从头编码发送的db单位的客户)。你在mysql_real_connect()前也必需挪用mysql_init()!做这个改动同意新的mysql_options()函数在MYSQL处置程序布局中保留选项。

4.16.3从一个3.20版本晋级到3.21
假如你正在运转一个比3.20.28旧的版本而且想要换到3.21.x,你必要做以下事变:

你能用safe_mysqld--old-protocol启动mysqld3.21服务器从3.20分发的客户利用它。在这类情形下,新客户函数mysql_errno()将不前往任何服务器毛病,而仅仅是CR_UNKNOWN_ERROR(可是它为客户毛病服务)而且服务器利用旧的passwd()反省而非新的一个。

假如你在而不是对mysqld利用--old-protocol选项,你将必要做以下改动:

一切的客户代码必需从头编译。假如你正在利用ODBC,你必需失掉新的MyODBC2.x驱动程序。
剧本scripts/add_long_password必需运转以便变更在mysql.user表中的Password字段为CHAR(16)。
一切在mysql.user中的口令必需被从头赋值(为了失掉62位而非31位口令)。
表格局没变更,因而你不用须变更任何表。
MySQL3.20.28和以上版本能够处置新的user表格局而不影响客户。假如你有一个比3.20.28早的MySQL版本,假如你变更user表,口令将不再与之事情。因而为了平安,你起首应当晋级到最少3.20.28而且然后晋级到3.21.x。

新的客户代码可与一个3.20.x版的mysqld服务器一同事情,因而假如你碰到3.21.x的成绩,你可使用旧的3.20.x服务器而不必从头编译客户。

假如你对mysqld不利用--old-protocol选项,旧的客户将收回毛病动静:

ERROR:Protocolmismatch.ServerVersion=10ClientVersion=9

新的PerlDBI/DBD接口也撑持旧的mysqlperl接口。假如你利用mysqlperl,你必需做的独一改动是改动到connect()函数的参数。新参数是:host、database、user、password(user和password参数改动了地位)。见20.5.2DBI接口。

以下变更大概影响到旧的使用程序的查询:

如今HAVING必需在任何ORDERBY子句前被指定。
LOCATE()参数被互换了。
有一些新的保存字。最出名是DATE、TIME和TIMESTAMP。

4.16.4晋级到其他系统布局
假如你正在利用MySQL3.23,你能在分歧的撑持一样浮点格局的系统布局之间拷贝.frm、.MYI和.MYD。(MySQL思索了任何字节互换的成绩)。

MySQLISAM数据“*.ISD”和索引文件“*.ISM”文件是依附于体系布局并在某些情形下依附于OS。假如你想要挪动你的使用程序到有与你以后体系分歧的系统布局或OS的其他呆板上,你不该该试图经由过程复杂地拷贝文件到别的的呆板下去挪动一个数据库,相反利用mysqldump。

缺省地,mysqldump将创立一个全是SQL语句的文件,然后你能够把文件转移到其他呆板上而且把它作为mysql客户的输出。

试一试mysqldump--help看可失掉甚么选项。假如你正在挪动数据到一个更新的MySQL版本,你应当用失掉的更新的版本利用mysqldump--opt失掉一个疾速、松散的倒出(dump)。

最简单(只管不是最快)的在2台呆板之间挪动一个数据库的办法是在数据库地点的呆板上运转以下命令:

shell>mysqladmin-hotherhostnamecreatedb_name
shell>mysqldump--optdb_name
|mysql-hotherhostnamedb_name

假如你想要在一个慢的收集上从一台远程呆板上拷贝一个数据库,你可使用:

shell>mysqladmincreatedb_name
shell>mysqldump-hotherhostname--opt--compressdb_name
|mysqldb_name

你也能够在一个文件中存储了局,然后把文件转移到方针呆板而且在那边装载文件到数据库。比方,你能象如许在源呆板上倾倒一个数据库到一个文件:

shell>mysqldump--quickdb_name|gzip>db_name.contents.gz

(本例创立的文件被紧缩)转移包括数据库内容的文件到方针呆板,而且在那边运转这些命令:

shell>mysqladmincreatedb_name
shell>gunzip<db_name.contents.gz|mysqldb_name

你也能够利用mysqldump和mysqlimport完成数据库转移。对年夜数据库表,这比复杂地利用mysqldump更快。鄙人列命令中,DUMPDIR代表你用来存储来自mysqldump的输入的目次的完全的路径。

起首,为输入文件和倾倒数据库创立目次:

shell>mkdirDUMPDIR
shell>mysqldump--tab=DUMPDIRdb_name

然后转移在DUMPDIR目次下的文件到方针呆板的一些响应目次而且在那边装载文件到MySQL:

shell>mysqladmincreatedb_name#createdatabase
shell>catDUMPDIR/*.sql|mysqldb_name#createtablesindatabase
shell>mysqlimportdb_nameDUMPDIR/*.txt#loaddataintotables

别的,别健忘拷贝mysql数据库,由于那是受权表(user、db、host)被存储的中央。你大概必需作为MySQLroot用户在新呆板上运转命令,直到你让mysql数据库到位。

当你在新呆板上导进mysql数据库后,实行mysqladminflush-privileges以燕服务器再次装进受权表信息。




义务编纂:eight(2001-06-0621:48)珍贵的资金可以用于其他业务的启动,诸如市场、广告或调研和开发等。

莫相离 发表于 2015-1-19 22:40:52

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

蒙在股里 发表于 2015-1-26 23:24:27

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

小女巫 发表于 2015-2-4 21:41:04

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

小妖女 发表于 2015-2-10 17:22:04

数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。

金色的骷髅 发表于 2015-3-1 13:10:23

SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.

不帅 发表于 2015-3-10 17:32:26

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

冷月葬花魂 发表于 2015-3-17 08:32:09

SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。

变相怪杰 发表于 2015-3-24 03:52:38

一个是把SQL语句写到客户端,可以使用DataSet进行加工;
页: [1]
查看完整版本: MYSQL网页编程之MySQL中文参考手册5(安装MySQL下)