楼主: oraclelang

MySQL中文參考手冊

[复制链接]
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
111#
 楼主| 发表于 2006-4-29 10:17 | 只看该作者
shell>CXX="gcc -O3" ./configure
它能工作,因為gcc象g++一樣編譯C++源代碼,但缺省地它不鏈接libg++或libstdc++。解決這些問題的其他方法當然是安裝g++、libg++和libstdc++。

如果你的編譯以下面任何錯誤而失敗,你必須升級make版本到GNUmake:
making all in mit-pthreads
make: Fatal error in reader: Makefile, line 18:
Badly formed macro assignment
 or
make: file `Makefile' line 18: Must be a separator (:
 or
pthread.h: No such file or directory

Solaris和FreeBSD已知make程序有問題。GNU make版本3.75已知能工作。

如果你想要定義你的C或C++編譯器所使用的標志,把標志加到CFLAGS和CXXFLAGS環境變量中即可。你也能使用CC和CXX來指定編譯器名字。例如:

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
112#
 楼主| 发表于 2006-4-29 10:18 | 只看该作者
shell>CC=gcc
shell>CFLAGS=-O6
shell>CXX=gcc
shell>CXXFLAGS=-O6
shell>export CC  CFLAGS  CXX  CXXFLAGS

對于已經知道在不同系統上有用的標志定義列表,見4.14 TcX 二進制代碼。

如果你得到象如下的一條錯誤消息,你需要升級你的gcc編譯器:
client/libmysql.c:273: parse error brfore '__attribute__'
gcc2.8.1已知可以工作,但是我們推薦使用egcs1.0.3a或更新。

如果你在編譯mysqld時顯示例如下面的那些錯誤, configure沒有正確地檢測傳到accept()、getsockname()或getpeername()最後參數的類型:
cxx: Error: mysqld.cc, line 645: In this statement, the referenced
     type of the pointer value "&length" is "unsigned long", which
     is not compatible with "int".
new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);

為了修正它,編輯“config.h”文件(它由configure生成)。尋找這些行:

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
113#
 楼主| 发表于 2006-4-29 10:18 | 只看该作者
/* Define as the base type of the last arg to accept */
#define SOCKET_SIZE_TYPE XXX

更改XXX為size_t或int,這取決于你的操作系統。(注意:你每次咝衏onfigure都必須這樣做,因為configure重新生成“config.h”。)

“sql_yacc.cc”文件由“sql_yacc.yy”生成。通常構造過程不需要創造“sql_yacc.cc”,因為MySQL有一個已經生成的拷貝,然而,如果你確實需要再創建它,你可能碰到這個錯誤:
"sql_yacc.yy", line xxx fatal: default action causes potential...

這是一個你的yacc版本不完善的跡象。你可能需要安裝bison(GNU 版本yacc)並使用它。

如果你需要調試mysqld或MySQL客戶,咝衏onfigure,使用--with-debug選項,然後重新編譯並且鏈接你客戶程序到新的客戶庫。見G.2 調試一個MySQL客戶。
4.9 MIT-pthreads注意事項

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
114#
 楼主| 发表于 2006-4-29 10:18 | 只看该作者
這節描述在使用 MIT-pthreads 所涉及的一些問題。

注意:在Linux上,你應該不使用MIT-pthreads而是安裝LinuxThreads!見4.11.5 Linux 注意事項(所有的Linux 版本)。

如果你的系統不提供原生的線程支持,你將需要使用MIT-pthreads包構造MySQL。這包括大多數FreeBSD系統、SunOS 4.x 、Solaris 2.4和更早版本及其他,見4.2 MySQL 支持的操作系統。

在大多數系統上,你能通過使用configure,用--with-mit-threads選項來強迫咝蠱IT-pthreads:
shell> ./configure -- with-mit-threads
當使用MIT-pthreads時,不支持在一個非源代碼目錄構造,因為我們想要使我們對代碼的改變減到最小。

MIT-pthreads不支持用于實現Unix套接字的AF_UNIX協議。這意味著如果你使用MIT-pthreads進行編譯,所有的鏈接必須使用TCP/IP進行(它有點慢)。如果在構造MySQL後,你發現你不能與本地的服務器連接,很可能是客戶程序正在試圖用缺省的Unix套接字與localhost連接。使用主機選擇(-h或--host)明確地指定本地的主機名字,嘗試做一個TCP/IP連接到mysql。
決定是否使用MIT-pthreads的檢查僅在處理服務器代碼的配置過程期間發生。如果已經用--without-server配置了分發並只構造客戶代碼,客戶將不知道MIT-pthreads是否正在被使用並且是否使用缺省的Unix套接字連接。因為Unix套接字不能在MIT-pthreads下面工作,這意味著當你咝锌蛻舫绦驎r,你將需要使用-h或--host。
當使用MIT-pthreads編譯MySQL時,因為性能原因,系統鎖定缺省為禁止使用。你可以用--use-locking選項告訴服務器使用系統鎖定。
有時pthreadbind()命令不能綁定一個套接字但沒有任何錯誤消息(至少在Solaris上),結果是所有到服務器的連接均失敗。例如:
shell> mysqladmin version
mysqladmin: connect to server at '' failed;
error: 'Can't connect to mysql server on localhost (146)'

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
115#
 楼主| 发表于 2006-4-29 10:18 | 只看该作者
解決它的方法是殺死mysqld服務器並且重啟它。這只有當我們強迫服務器停止並馬上進行重啟時在發生。

使用MIT-pthreads,sleep()系統調用不是可中斷的SIGINT(break)。這只有在你咝衜ysqladmin --sleep時才能注意到。你在中斷起作用並且進程停止之前必須等待sleep()終止。
當鏈接時,你可能會收到這樣的警告消息(至少在Solaris上);他們可以被忽視:
ld: warning: symbol `_iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
ld: warning: symbol `__iob' has differing sizes:
    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
file /usr/lib/libc.so value=0x140);
    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken

一些其他的警告也可被忽略:
implicit declaration of function `int strtoll(...)'
implicit declaration of function `int strtoul(...)'

我們還沒有讓readline可在MIT-pthreads上工作。(這不需要,但是可能某些人有興趣。)
4.10 Perl 安裝說明

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
116#
 楼主| 发表于 2006-4-29 10:18 | 只看该作者
4.10.1 在Unix上安裝Perl
Perl對MySQL的支持借助DBI/DBD客戶接口而提供。見20.5 MySQL Perl API。Perl DBD/DBI客戶代碼要求Perl 5.004或以後版本。如果你有Perl的一個更舊的版本,接口將不能工作。

MySQL Perl支持也要求你安裝了MySQL客戶編程支持。如果你從RPM文件安裝MySQL,客戶程序在客戶RPM中,但是客戶編程支持在開發者RPM。確定你安裝了後一個RPM 。

對于版本3.22.8,Perl支持是與主要MySQL發行版本單獨分發。如果你想要安裝Perl支持,你需要的文件能從http://www.mysql.com/Contrib獲得。

Perl 分發以壓縮的tar檔案提供,並且有一個類似“MODULE-VERSION.tar.gz”的名字,這里MODULE是模塊名字並且VERSION是版本號。你應該得到Data-Dumper、DBI和Msql-Mysql-modules分發並按此次序安裝他們。安裝過程顯示出在下面,顯示的例子針對Data-Dumper模塊, 但是所有3個過程是相同的。

解包分發到當前目錄:
shell> gunzip < Data-Dumper-VERSION.tar.gz | tar  xvf -
這個命令創建的一個名為“Data-Dumper-VERSION”的目錄。

進入解包分發的頂級目錄:
shell> cd  Data-Dumper-VERSION
構造分發並且編譯所有東西:
shell> perl Makefile.PL

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
117#
 楼主| 发表于 2006-4-29 10:19 | 只看该作者
shell> make test
shell> make install

make test命令很重要,因為它驗証模塊正在工作。注意:在你Msql-Mysql-modules安裝期間咝性撁?钤囼灲涌诖?a時,MySQL服務器必須正在咝校?駝t測試將失敗。

無論何時你安裝一個新版本的MySQL,重建並且重新安裝Msql-Mysql-modules分發是一個好主意, 特別是如果你在升級MySQL後,觀察所有異常,如你的DBI腳本核心傾倒(core dump)。

如果你沒有權限在系統目錄下安裝Perl模塊,或如果你安裝本地Perl模塊,下列參考書可以幫助你:

http://www.iserver.com/support/contrib/perl5/modules.html

在標題Installing New Modules that Require Locally Installed Modules下面查找。

4.10.2 在Win32上安裝ActiveState Perl
在 Win32 上安裝 ActiveState Perl的MySQL DBD的模塊, 你應該做下列步驟:

打開一個DOS shell。
如果需要,設置HTTP_proxy變量。例如, 你可以試一試:set HTTP_proxy=my.proxy.com:3128
啟動PPM程序:C:\perl\bin\ppm.pl
如果你還沒有這樣做,安裝DBI: install DBI
如果成功,安裝DBD::mysql:http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
118#
 楼主| 发表于 2006-4-29 10:19 | 只看该作者
如果你不能使上述步驟工作,你應該安裝MyODBC驅動程序並且通過ODBC連接MySQL服務器。

use DBI;
$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password" ||
  die "Got error $DBI::errstr when connecting to $dsn\n";

4.10.3 在Win32上安裝MySQL Perl分發
MySQL Perl分發包含DBI、DBD:MySQL和DBD:ODBC。

http://www.mysql.com/download.html得到Win32的Perl分發。
在C:解壓縮分發,這樣你得到一個“C:\PERL”目錄。
增加目錄“C:\PERL\BIN”到你的路徑。
增加目錄“C:\PERL\BIN\MSWin32-x86-thread”或“C:\PERL\BIN\MSWin32-x86”到你的路徑。
在 DOS shell執行perl -v測試perl的咝小

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
119#
 楼主| 发表于 2006-4-29 10:19 | 只看该作者
如果你從DBD-mysql得到下列錯誤,你可能正在使用gcc(或使用一個舊的用gcc編譯的二進制代碼):

/usr/bin/perl: can't resolve symbol '__moddi3'
/usr/bin/perl: can't resolve symbol '__divdi3'

當“mysql.so”庫文件被構造時候,為鏈接命令加上-L/usr/lib/gcc-lib/... -lgcc(當你編譯Perl客戶時檢查針對“mysql.so”的make輸出)。-L選項應該指定“libgcc.a”在你系統上所在目錄的路徑名。

這個問題的另一個原因可能是Perl和MySQL都不是用gcc編譯的。在這種情況下,你可以都用gcc編譯以解決不匹配。

如果你想要在一個不支持動態鏈接(象SCO那樣)的系統上使用Perl模塊,你可以產生包括DBI和DBD-mysql的Perl的一個靜態版本。這種咝蟹椒ㄊ悄闵?梢粋

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
120#
 楼主| 发表于 2006-4-29 10:19 | 只看该作者
4.11.3 Solaris x86 注意事項
如果你正在在 Solaris x86上使用gcc或egcs,並且你碰到了在裝載時的核心傾倒(core dump)問題,你應該使用下列configure命令:

shell> CC=gcc CFLAGS="-O6 -fomit-frame-pointer" \
       CXX=gcc \
       CXXFLAGS="-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
       ./configure --prefix=/usr/local/mysql

用libstdc++庫和與C++異常處理來避免這個問題。

如果這沒有幫助,你應該編譯一個調試版本並且用一個蹤跡文件咝兴?蛟趃db下咝兴?R奊.1 調試一個 MySQL 服務器。

4.11.4 SunOS 4 注意事項
在 SunOS 4 上, 需要MIT-pthreads 編譯MySQL,反過來這意味著你將需要GNU make。

一些SunOS 4系統的動態庫和libtool有問題。你可以使用下列configure行來避免這個問題:

shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static

當編譯readline時,你可能得到關于重複定義的警告,這些可以被忽略。

當編譯mysqld時候, 將有一些implicit declaration of function警告,這些可以被忽略。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表