楼主: oraclelang

MySQL中文參考手冊

[复制链接]
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
151#
 楼主| 发表于 2006-4-29 10:26 | 只看该作者
我們計劃在不久的將來修正它。

UDF函數
暫時MySQL-Win32不支持用戶可定義函數。
DROP DATABASE
你不能拋棄一個正在被某些線程使用的數據庫。
從任務管理器殺死MySQL
在Windows95上,你不能從任務管理器或用shutdown實用程序殺死MySQL。你必須用mysqladmin shutdown關閉它。
大小寫區分的名字
文件名在Win32上是忽略大小寫的,因此Win32上的MySQL數據庫和表的名字也是忽略大小寫的。唯一的限制是數據庫和表的名字必須在整個一個給定的語句中大小寫是一樣的,因為它用my_table和MY_TABLE都指向同一個表子,下列查詢將不工作:
SELECT * FROM my_table WHERE MY_TABLE.col=1;

“ \ ”目錄字符
在Win95上的路徑名組成由“\”字符分隔,它在MySQL中也是轉義字符。如果你正在使用LOAD DATA INFILE或SELECT ... INTO OUTFILE,你必須用兩個“\”字符或使用Unix風格的文件名“/”字符:
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';

Can't open named pipe錯誤
如果你使用NT上的MySQL-Win32共享軟件版本,用最新的mysql客戶,你將得到下列錯誤:
error 2017: can't open named pipe to host: . pipe...

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
152#
 楼主| 发表于 2006-4-29 10:27 | 只看该作者
這是因為NT上MySQL正式版本缺省地使用命名管道。你能通過為新MySQL客戶使用--host=localhost選項或創建一個包含下列信息的文件“C:\my.cnf”來避免這個錯誤:

[client]
host = localhost

Access denied for user錯誤
在訪問在同一機器上的一個MySQL服務器時,如果你得到Access denied for user: 'some-user@unknown' to database 'mysql'的錯誤,這意味著MySQL不能正確解釋你的主機名。為了修正它,你應該創建一個文件“\windows\hosts”,有下列信息:
127.0.0.1  localhost
對于可能想要幫助我們做好Win32版本的任何人,這里有的一些開放的問題:

制作一個單用戶MYSQL.DLL服務器。這應該包括一個標准MySQL服務器的一切,除了線程創建外。這將使MySQL在不需要一個真正的客戶機/服務器和不需要從其他主機存取服務器的應用程序時更容易使用。
為MySQL安裝增加一些漂亮的“start”和“shutdown”圖標。
為MySQL啟動選項創建造一個工具管理注冊表條目。注冊表條目的度缺已經被編碼進mysqld.cc,但是它應該重新編碼而更加面向“參數”,該工具應該也能更新“ \my.cnf”文件,如果用戶比較喜歡使用它而不是注冊表。
當用--install登記mysqld作為一種服務(在 NT 上 )時,如果你也可以在命令行上增加缺省選項,它將更好,目前解決辦法是更新“C:\my.cnf”文件。
當你挂起一個咝蠾in95的膝上計算機時,當膝上計算機被恢複時,mysqld守護程序不接受新連接。我們不知道這是否 Win95、TCP/IP或MySQL的問題。
能從任務管理器殺死mysqld將絕對是好事,目前,你必須使用mysqladmin shutdown。
移植用在 mysql命令行工具的readline到Win32。
標准的GUI版本MySQL客戶(mysql、mysqlshow、mysqladmin和mysqldump) 將更好。
如果在“net.c”中的套接字“讀”和“寫”函數是可中斷的,那將更好。這將有可能在Win32上用mysqladmin kill殺死打開的線程。
制作有關哪些Windows程序能工作在MySQL-Win32/MyODBC和必須做什麼在能讓他們工作的文檔。
mysqld總是在“C”處啟動而不在缺省地點,我們想讓mysqld使用當前地點用于排序順序。

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
153#
 楼主| 发表于 2006-4-29 10:27 | 只看该作者
移植sqlclient到Win32(幾乎完成)並加入更多的特征!
把更多的選項加到Mysql Manager。
在服務器和客戶之間改變通訊協議,使用Windows內部通訊而不是套接字和TCP/IP。
用.DLL實現UDF函數。
增加宏以使用由Win32提供的更快的對線程安全的增加/減少方法。
其他Win32特定問題在MySQL-Win32分發的“README”文件中描述。

4.13 OS/2 注意事項
MySQL使用太多的打開文件。因此,你應該增加類似下面的東西到你的“CONFIG.SYS”文件:

SET EMXOPT=-c -n -h1024
如果你不這樣做,你將可能碰到下列錯誤:

File 'xxxx' not found (Errcode: 24)
當OS/2 Warp 3上使用MySQL時,要求FixPack 29或以上。用OS/2 Wrap 4,要求FixPack 4或以上。這是Pthreads庫的一個要求。MySQL必須安裝在支持長文件名的一個分區上,如HPFS、FAT32等等。

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
154#
 楼主| 发表于 2006-4-29 10:27 | 只看该作者
“INSTALL.CMD”腳本必須從OS/2'自己的“CMD.EXE”咝衼K且不能工作在替代品如“4OS2.EXE”。

“scripts/mysql-install-db”腳本已經被重新命名了:它現在調用“install.cmd”並且是一個 REXX 手跡,將安裝缺省的MySQL安全配置並為MySQL創建WorkPlace Shell 圖標。

動態模塊支持通過編譯但沒有充分測試,動態模塊應該使用Pthreads咝袝r刻庫編譯。

gcc -Zdll -Zmt -Zcrtdll=pthrdrtl -I../include -I../regex -I.. \
    -o example udf_example.cc -L../lib -lmysqlclient udf_example.def
mv example.dll example.udf

注意:由于OS/2的限制,UDF模塊名字的詞幹不能超過8個字符。模塊被存儲在“/mysql2/udf”目錄;safe-mysqld.cmd腳本將把這個目錄放在BEGINLIBPATH環境變量中。當使用UDF模塊時,指定的擴展名被忽略--它被假定為“.udf”。例如,在 Unix上,共享模塊可能被命名為“example.so”並且你可以象這樣從它裝載函數:

CREATE FUNCTION metaphon RETURNS STRING SONAME "example.so";

正是OS/2,模塊將被命名為“example.udf”,但是你不指定模塊擴展名:
CREATE FUNCTION metaphon RETURNS STRING SONAME "example";
4.14 TcX二進制代碼
作為一種服務,TcX提供一套MySQL的二進制分發,它在TcX或在客戶友好地給與我們訪問他們機器的權限的站點上被編譯。

這些分發用scripts/make_binary_distribution生成並且用下列編譯器和選項配置:

SunOS 4.1.4 2 sun4c with gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --disable-shared
SunOS 5.5.1 sun4u with egcs 1.0.3a
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 --with-low-memory
SunOS 5.6 sun4u with egcs 2.90.27
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 --with-low-memory
SunOS 5.6 i86pc with gcc 2.8.1
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
Linux 2.0.33 i386 with pgcc 2.90.29 (egcs 1.0.3a)
CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-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
SCO 3.2v5.0.4 i386 with gcc 2.7-95q4
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
AIX 2 4 with gcc 2.7.2.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
OSF1 V4.0 564 alpha with gcc 2.8.1
CC=gcc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql --with-low-memory
Irix 6.3 IP32 with gcc 2.8.0
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
BSDI BSD/OS 3.1 i386 with gcc 2.7.2.1
CC=gcc CXX=gcc CXXFLAGS=-O ./configure --prefix=/usr/local/mysql
BSDI BSD/OS 2.1 i386 with gcc 2.7.2
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
任何有比上述配置更優的選項的人總是能把他們寄給開發者郵件列表中。

MySQL3.22以前的RPM分發是用戶貢獻的,自3.22開始,一些RPM是TcX 生成的。

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
155#
 楼主| 发表于 2006-4-29 10:27 | 只看该作者
4.15 安裝後期的設置和測試
一旦你已經安裝了MySQL(從一個二進制代碼或源代碼分發),你需要初始化授權表,啟動服務器並且保証服務器正確咝小D阋部梢韵M?才欧?掌髟谀愕南到y開機和關機時自動地被啟動和停止。

通常,對從源代碼分發的安裝,你象這樣安裝授權表並啟動服務器:

shell> ./scripts/mysql_install_db
shell> cd mysql_installation_directory
shell> ./bin/safe_mysqld &

對二進制分發,這樣做:

shell> cd mysql_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”,除非在你咝衏onfigure時指定了一個“ /usr/local”以外的安裝目錄。EXECDIR是mysqld服務器安裝的地點,對二進制分發,這與BINDIR一樣。對源代碼分發,EXECDIR可能是“/usr/local/libexec”。

測試詳細在下面描述:

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
156#
 楼主| 发表于 2006-4-29 10:28 | 只看该作者
如果必要,啟動mysqld服務器並且建立初始MySQL授權表,包含決定用戶如何被允許連接服務器的權限。這通常用mysql_install_db腳本做:
shell> scripts/mysql_install_db

典型地,mysql_install_db僅在你第一次安裝MySQL時需要咝校?虼耍?绻?阏?谏?壃F有的安裝,你可以跳過這一步。(然而,mysql_install_db的使用相當安全,並且將不更新已經存在的任何表,因此如果你是不能肯定做什麼,你總是可以咝衜ysql_install_db。) mysql_install_db在mysql數據庫里創建6個表(user、db、host、tables_priv、columns_priv和func),初始權限的描述在6.10 設置初始MySQL權限給出。簡單地說,這些權限允許MySQL root用戶做任何事情,並且允許任何人創建立或使用一個名字以'test'或'test_'開始的數據庫。如果你不設置權限表,當你啟動服務器時,下列錯誤將在日志文件出現:

mysqld: Can't find file: 'host.frm'

如果你不是通過明顯地執行./bin/safe_mysqld來啟動MySQL,上述錯誤可能也發生在MySQL二進制代碼分發!你可能需要作為root咝衜ysql_install_db,然而,如果你喜歡, 如果用戶能在數據庫目錄讀並且寫文件,你可以作為一個非特權(非--root)用戶咝蠱ySQL服務器。作為一個非特權用戶咝蠱ySQL的指令在18.8 怎樣作為一個一般用戶咝

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
157#
 楼主| 发表于 2006-4-29 10:28 | 只看该作者
Running threads: 1  Questions: 20  Reloads: 2  Open tables: 3

為了感覺你能用BINDIR/mysqladmin做其他事情,用--help選項調用它。

証實你能關掉服務器:
shell> BINDIR/mysqladmin -u root shutdown

証實你能重啟服務器。使用safe_mysqld或直接調用mysqld進行,例如:
shell> BINDIR/safe_mysqld --log &

如果safe_mysqld失敗,從MySQL安裝目錄嘗試咝兴

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
158#
 楼主| 发表于 2006-4-29 10:28 | 只看该作者
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> scripts/mysql_install_db
shell> bin/safe_mysqld &

在這以後,你應該編輯你的服務器引導腳本手跡用不同的套接字和端口啟動兩個守護進程。例如,它能調用safe_mysqld兩次,但是對每次調用使用不同的--socket、--port和--basedir選項。

你沒有“ /tmp ”的寫權限
如果你沒有寫權限在缺省地方(在“/tmp”里)創建一個套接字文件,或沒有在“/tmp”創建臨時文件的許可,在咝衜ysql_install_db或當啟動或使用mysqld時,你將得到一個錯誤。你可以如下地指定一個不同的套接字和臨時目錄:
shell> TMPDIR=/some_tmp_dir/
shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysqld.sock
shell> export TMPDIR MYSQL_UNIX_PORT

“some_tmp_dir”應該是你有寫許可的某個目錄的路徑。在這以後,你應該能咝衜ysql_install_db並且這些命令啟動服務器:

shell> scripts/mysql_install_db
shell> BINDIR/safe_mysqld &

mysqld立刻崩潰
如果你正在咝蠷edHat 5.0,有一個比2.0.7-5舊的glibc版本,你應該保証你安裝了glibc所有補丁!在MySQL郵件檔案中有很多關于它的信息。郵件檔案的鏈接可在聯機MySQL文檔頁得到。也可見4.11.5 Linux 注意事項(所有Linux版本)。你也可以手工啟動mysqld,使用--skip-grant選項並且增加使用mysql本身的權限信息:
shell> BINDIR/safe_mysqld --skip-grant &
shell> BINDIR/mysql -u root mysql

從mysql,手工執行在mysql_install_db里面的SQL命令。保証你隨後咝衜ysqladmin reload告訴服務器再裝入授權表。

4.15.2 啟動MySQL服務器的問題
通常,你用3個方法之一啟動mysqld服務器:

通過調用mysql.server。這個腳本主要用于系統啟動和關閉,更全面的描述在4.15.3 自動啟動和停止MySQL。
通過調用safe_mysqld,它試圖為mysqld決定正確的選項並然後用那些選擇咝兴?

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
159#
 楼主| 发表于 2006-4-29 10:29 | 只看该作者
旦你確定你想要的路徑設置,不用--help選項啟動服務器。

如果你得到下列錯誤,它意味著mysqld正在試圖使用某些其他程序(或其他mysqld服務器)已經正在使用TCP/IP端口或套接字:

Can't start server: Bind on TCP/IP port: Address already in use
  或
Can't start server : Bind on unix socket...

使用ps保証你沒有另外一個mysqld服務器正在咝小H绻?悴荒馨l現其他咝械姆?掌鳎?憧梢試L試執行命令telnet your-host-name tcp-ip-port-number並且按幾次RETURN鍵,如果你沒有得到一個錯誤消息,像telnet: Unable to connect to remote host: Connection refused,某個東西正在使用mysqld正在試圖使用的TCP/IP端口,見4.15.1 咝衜ysql_install_db的問題和19.3 在同一台機器上咝卸鄠

使用道具 举报

回复
论坛徽章:
4
每日论坛发贴之星
日期:2005-04-26 01:01:12会员2006贡献徽章
日期:2006-04-17 13:46:34ITPUB元老
日期:2008-01-09 22:26:12
160#
 楼主| 发表于 2006-4-29 10:29 | 只看该作者
裝目錄啟動safe_mysqld即可:

shell> cd mysql_installation_directory
shell> bin/safe_mysqld &

如果safe_mysqld失敗,甚至在從MySQL安裝目錄調用時,你可以修改它以便使用到mysqld路徑並且對你的系統的路徑選項是正確的。注意,如果在將來你升級MySQL,你的safe_mysqld修改版本將被覆蓋,因此你應該做一個你能重新安裝的編輯過的版本的拷貝。

如果mysqld當前正在咝校?ㄟ^執行這個命令,你能發現它正在使用什麼路徑設置:

shell> mysqladmin variables



shell> mysqladmin -h 'your-host-name' variables

如果safe_mysqld啟動服務器但是你不能與它連接,你應該保証你在“/etc/hosts”里面有一個條目,看起來像這樣:

127.0.0.1  localhost
這個問題僅發生在沒有一個能工作的線程庫

使用道具 举报

回复

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

本版积分规则 发表回复

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