




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MySQL中文參考手冊(適用版本:MySQL3.23.7alpla)目錄目錄 11MySQL?的一般信息 121.1什么是?MySQL? 131.2關(guān)于本手冊 141.2.1本手冊中使用的約定 141.3MySQL?的歷史 151.4MySQL?的主要特征 161.5MySQL的穩(wěn)定性? 171.6順應(yīng)2000年(Year2000compliance) 191.7SQL一般信息和教程 211.8?有用的MySQL相關(guān)鏈接 221.8.1教程 221.8.2Perl相關(guān)鏈接 221.8.3MySQL
討論論壇 221.8.4支持
MySQL
的商業(yè)應(yīng)用 221.8.5SQL客戶程序 221.8.6支持MySQL的Web
開發(fā)工具 231.8.7用
MySQL
支持的數(shù)據(jù)庫設(shè)計工具 231.8.8使用MySQL工具的Web服務(wù)器 231.8.9對其他程序的擴(kuò)充 241.8.10通過其他程序使用MySQL 241.8.11ODBC有關(guān)的鏈接 241.8.12API有關(guān)的鏈接 241.8.13其它MySQLx有關(guān)的鏈接 241.8.14SQL和數(shù)據(jù)庫接口 25
1.8.15使用MySQL的例子 25
1.8.16
一般的數(shù)據(jù)庫鏈接 262?MySQL郵件列表及如何提問或報告錯誤 262.1??MySQL?郵件列表 262.2?提問或報告錯誤 282.3?怎樣報告錯誤或問題 282.4?在郵件列表上回答問題的指南 323??MySQL的許可證和技術(shù)支持 323.1??MySQL的許可證政策 323.2?MySQL使用的版權(quán) 33?3.2.1?可能的未來版權(quán)改變 343.3?MySQL商業(yè)性分發(fā) 343.4許可證實例 353.4.1銷售使用MySQL的產(chǎn)品 353.4.2?銷售MySQL相關(guān)的服務(wù) 363.4.3??ISP??MySQL?服務(wù) 363.4.4?運(yùn)營一個使用?MySQL的Web服務(wù)器 363.5?MySQL的許可證和技術(shù)支持費用 373.5.1?付款信息 383.5.2?聯(lián)系信息 393.6?商業(yè)性支持的類型 393.6.1?基本的電子郵件支持 393.6.2?擴(kuò)展電子郵件支持 403.6.3?登錄支持 403.6.4?擴(kuò)展的登錄支持 414安裝MySQL 414.1怎樣獲得MySQL 414.2MySQL支持的操作系統(tǒng) 444.3使用MySQL哪個版本 444.4怎樣和何時發(fā)布更新版本 464.5安裝布局 474.6安裝MySQL二進(jìn)制代碼分發(fā) 484.6.1LinuxRPM注意事項 504.6.2構(gòu)造客戶程序 514.6.3系統(tǒng)特定的問題 514.7安裝MySQL源代碼分發(fā) 544.7.1快速安裝概述 544.7.2運(yùn)用補(bǔ)丁 564.7.3典型的configure選項 574.8編譯問題? 594.9MIT-pthreads注意事項 634.10Perl安裝說明 654.10.1在Unix上安裝Perl 654.10.2在Win32上安裝ActiveStatePerl 664.10.3在Win32上安裝MySQLPerl分發(fā) 664.10.4使用PerlDBI/DBD接口的問題 674.11系統(tǒng)特定的問題 684.11.1Solaris注意事項 684.11.2Solaris2.7注意事項 704.11.3Solarisx86注意事項 714.11.4SunOS4注意事項 724.11.5Linux注意事項(所有Linux版本) 724.11.6Alpha-DEC-Unix注意事項 774.11.7Alpha-DEC-OSF1注意事項 784.11.8SGI-Irix注意事項 794.11.9FreeBSD注意事項 804.11.10NetBSD注意事項 814.11.11OpenBSD2.5注意事項 814.11.12BSD/OS注意事項 814.11.13SCO注意事項 834.11.14SCOUnixware7.0注意事項 854.11.15IBM-AIX注意事項 864.11.16HP-UX注意事項 864.11.17MacOSX注意事項 874.12Win32注意事項 874.12.1在Win32上安裝MySQL 874.12.2在Win95/Win98上啟動MySQL 884.12.3在NT上啟動MySQL 884.12.4在Win32上運(yùn)行MySQL 904.12.5用SSH從Win32連接一個遠(yuǎn)程MySQL 914.12.6MySQL-Win32與UnixMySQL比較 924.13OS/2注意事項 944.14TcX二進(jìn)制代碼 954.15安裝后期的設(shè)置和測試 964.15.1運(yùn)行mysql_install_db的問題 1004.15.2啟動MySQL服務(wù)器的問題 1024.15.3自動啟動和停止MySQL 1044.15.4選項文件 1054.16升級/降級MySQL時有什么特別的事情要做? 1074.16.1從一個3.22版本升級到3.23 1084.16.2從一個3.21版本升級到3.22 1094.16.3從一個3.20版本升級到3.21 1094.16.4升級到其他體系結(jié)構(gòu) 1105MySQL與標(biāo)準(zhǔn)的兼容性? 1125.1?MySQL對ANSISQL92擴(kuò)充 1125.2以ANSI模式運(yùn)行MySQL 1145.3MySQL相比ANSISQL92的差別 1145.4MySQL缺乏的功能 1155.4.1子選擇 1155.4.2SELECTINTOTABLE 1165.4.3事務(wù)處理 1165.4.4存儲過程和觸發(fā)器 1165.4.5外鍵 1165.4.6視圖 1175.4.7'--'作為一個注釋的開始 1175.5MySQL遵循什么標(biāo)準(zhǔn)? 1185.6怎樣處理沒有COMMIT/ROLLBACK 1186MySQL存取權(quán)限系統(tǒng) 1216.1權(quán)限系統(tǒng)做什么 1216.2MySQL用戶名和口令 1216.3與MySQL服務(wù)器連接 1216.4使你的口令安全 1236.5?MySQL提供的權(quán)限 1246.6權(quán)限系統(tǒng)工作原理 1266.7存取控制,階段1:連接證實 1296.8存取控制,階段2:請求證實 1326.9權(quán)限更改何時生效 1346.10建立初始的MySQL權(quán)限 1346.11向MySQL增加新用戶權(quán)限 1366.12怎樣設(shè)置口令 1396.13Accessdenied錯誤的原因 1406.14怎樣使MySQL安全以對抗解密高手 1437MySQL語言參考 1457.1文字:怎么寫字符串和數(shù)字 1457.1.1字符串 1457.1.2數(shù)字 1477.1.3十六進(jìn)制值 1487.1.4NULL值 1487.1.5數(shù)據(jù)庫、表、索引、列和別名的命名 1487.2用戶變量 1507.3列類型 1517.3.1列類型存儲需求 1547.3.2數(shù)字類型 1547.3.3日期和時間類型 1547.3.4串類型 1557.3.5數(shù)字類型 1557.3.6日期和時間類型 1577.3.7字符串類型 1637.3.8為列選擇正確的類型 1687.3.9列索引 1687.3.10多列索引 1687.3.11使用來自其他數(shù)據(jù)庫引擎的列類型 1707.4用在SELECT和WHERE子句中的函數(shù) 1707.4.1分組函數(shù) 1717.4.2常用的算術(shù)操作 1717.4.3位函數(shù) 1727.4.4邏輯運(yùn)算 1737.4.5比較運(yùn)算符 1747.4.6字符串比較函數(shù) 1777.4.7類型轉(zhuǎn)換運(yùn)算符 1797.4.8控制流函數(shù) 1807.4.9數(shù)學(xué)函數(shù) 1817.4.10字符串函數(shù) 1877.4.11日期和時間函數(shù) 1957.4.12其他函數(shù) 2037.4.13與GROUPBY子句一起使用的函數(shù) 2077.5CREATEDATABASE句法 2097.6DROPDATABASE句法 2097.7CREATETABLE句法 2097.7.1隱含的列說明改變 2157.8ALTERTABLE句法 2157.9OPTIMIZETABLE句法 2187.10DROPTABLE句法 2187.11DELETE句法 2197.12SELECT句法 2197.13JOIN句法 2237.14INSERT句法 2257.15REPLACE句法 2287.16LOADDATAINFILE句法 2287.17UPDATE句法 2357.18USE句法 2357.19FLUSH句法(清除緩存) 2367.20KILL句法 2377.21SHOW句法(得到表,列等的信息) 2377.22EXPLAIN句法(得到關(guān)于SELECT的信息) 2437.23DESCRIBE句法(得到列的信息) 2477.24LOCKTABLES/UNLOCKTABLES句法 2487.25SETOPTION句法 2497.26GRANT和REVOKE句法 2517.27CREATEINDEX句法 2547.28DROPINDEX句法 2557.29注釋句法 2557.30CREATEFUNCTION/DROPFUNCTION句法 2567.31MySQL對保留詞很挑剔嗎? 2568MySQL教程 2598.1連接與斷開服務(wù)者 2598.2輸入查詢 2608.3常用查詢的例子 2648.3.1列的最大值 2658.3.2擁有某個列的最大值的行 2658.3.3列的最大值:按組:只有值 2668.3.4擁有某個字段的組間最大值的行 2668.3.5使用外鍵 2688.4創(chuàng)造并使用一個數(shù)據(jù)庫 2708.4.1創(chuàng)建并選用一個數(shù)據(jù)庫 2718.4.2創(chuàng)建一個數(shù)據(jù)庫表 2728.4.3將數(shù)據(jù)裝入一個數(shù)據(jù)庫表 2738.4.4從一個數(shù)據(jù)庫表檢索信息 2758.4.5使用多個數(shù)據(jù)庫表 2918.5獲得數(shù)據(jù)庫和表的信息 2938.6以批處理模式使用mysql 2948.7雙胞胎項目的查詢(實例) 2968.7.1找出所有非獨處的雙胞胎 2968.7.2顯示關(guān)于雙胞胎近況的表 2999MySQL服務(wù)器功能 3009.1MySQL支持哪些語言? 3009.1.1用于數(shù)據(jù)和排序的字符集 3009.1.2增加一個新的字符集 3019.1.3多字節(jié)字符支持 3029.2更新日志 3039.3MySQL數(shù)據(jù)庫表可以有多大? 3039.4MySQL數(shù)據(jù)庫表類型 30410從MySQL得到最大的性能 30610.1優(yōu)化概述 30610.2系統(tǒng)/編譯時和啟動參數(shù)的調(diào)節(jié) 30710.2.1編譯和鏈接怎樣影響MySQL的速度 30710.2.2磁盤問題 30810.2.3調(diào)節(jié)服務(wù)器參數(shù) 31010.2.4MySQL怎樣打開和關(guān)閉數(shù)據(jù)庫表 31410.2.5在同一個數(shù)據(jù)庫中創(chuàng)建大量數(shù)據(jù)庫表的缺點 31410.2.6為什么有這么多打開的表? 31510.2.7MySQL怎樣使用內(nèi)存 31510.2.8MySQL怎樣鎖定數(shù)據(jù)庫表 31610.2.9數(shù)據(jù)庫表級鎖定的問題 31710.3使你的數(shù)據(jù)盡可能小 31810.4MySQL索引的使用 31910.5存取或更新數(shù)據(jù)的查詢速度 32010.5.1估計查詢性能 32110.5.2SELECT查詢的速度 32210.5.3MySQL怎樣優(yōu)化WHERE子句 32210.5.4MySQL怎樣優(yōu)化LEFTJOIN 32410.5.5MySQL怎樣優(yōu)化LIMIT 32410.5.6INSERT查詢的速度 32510.5.7UPDATE查詢的速度 32610.5.8DELETE查詢的速度 32710.6選擇一種表類型 32710.6.1靜態(tài)(定長)表的特點 32810.6.2動態(tài)表的特點 32810.6.3壓縮表的特點 32910.6.4內(nèi)存表的特點 33010.7其他優(yōu)化技巧 33010.8使用你自己的基準(zhǔn)測試 33210.9設(shè)計選擇 33210.10MySQL設(shè)計局限/折衷 33310.11可移植性 33310.12我們已將MySQL用在何處? 33411MySQL基準(zhǔn)套件 33512MySQL實用程序 33712.1各種MySQL程序概述 33712.2管理一個MySQL服務(wù)器 33912.3從MySQL數(shù)據(jù)庫和表中倒出結(jié)構(gòu)和數(shù)據(jù) 34012.4從文本文件導(dǎo)入數(shù)據(jù) 34312.5MySQL壓縮只讀表生成器 34513維護(hù)MySQL安裝 35313.1使用myisamchk進(jìn)行表的維護(hù)和崩潰恢復(fù) 35313.1.1myisamchk調(diào)用語法 35413.1.2myisamchk內(nèi)存使用 35613.2建立一個數(shù)據(jù)庫表維護(hù)規(guī)范 35613.3獲得關(guān)于一個表的信息 35713.4使用myisamchk進(jìn)行崩潰恢復(fù) 36413.4.1怎樣檢查表的錯誤 36513.4.2怎樣修復(fù)表 36513.4.3表優(yōu)化 36713.5日志文件維護(hù) 36714為MySQL增加新函數(shù) 36814.1增加一個新的用戶定義函數(shù) 36814.1.1UDF的調(diào)用順序 36914.1.2參數(shù)處理 37114.1.3返回值和出錯處理 37214.1.4編譯并安裝用戶定義函數(shù) 37314.2增加一個新的原生函數(shù) 37415為MySQL增加新過程 37615.1analyse過程 37615.2編寫一個過程 37616MySQL對ODBC的支持 37616.1MyODBC支持的操作系統(tǒng) 37616.2怎樣報告MyODBC的問題 37716.3已知可用MyODBC工作的程序 37716.4怎樣填寫ODBC管理程序的各種域 37916.5怎樣在ODBC中獲得一個AUTO_INCREMENT列的值 38016.6報告MyODBC的問題 38117與一些常用程序一起使用MySQL 38117.1與Apache一起使用MySQL 38118問題和常見錯誤 38218.1如果MySQL總是崩潰怎么辦 38218.2使用MySQL時的一些常見錯誤 38318.2.1MySQLserverhasgoneaway錯誤 38318.2.2Can'tconnectto[local]MySQLserver錯誤 38418.2.3Host'...'isblocked錯誤 38618.2.4Toomanyconnections錯誤 38618.2.5Outofmemory錯誤 38718.2.6Packettoolarge錯誤 38718.2.7Thetableisfull錯誤 38718.2.8Commandsoutofsyncinclient錯誤 38818.2.9Ignoringuser錯誤 38818.2.10Table'xxx'doesn'texist錯誤 38818.3MySQL怎樣處理一個溢出的磁盤 38918.4如何從一個文本文件運(yùn)行SQL命令 38918.5MySQL在哪兒存儲臨時文件 38918.6怎樣保護(hù)“/tmp/mysql.sock”不被刪除 39018.7Accessdenied錯誤 39018.8怎樣作為一個一般用戶運(yùn)行MySQL 39018.9怎樣重新設(shè)置一個忘記的口令 39118.10文件許可權(quán)限問題 39218.11文件沒找到 39218.12使用DATE列的問題 39318.13時區(qū)問題 39418.14在搜索中的大小寫敏感性 39418.15NULL值問題 39418.16alias問題 39518.17從關(guān)聯(lián)的表中刪除行 39618.18解決沒有匹配行的問題 39618.19與ALTERTABLE有關(guān)的問題 39718.20怎樣改變一張表中列的順序 39819用MySQL解決一些常見問題 39819.1數(shù)據(jù)庫復(fù)制 39819.2數(shù)據(jù)庫備份 39919.3在同一臺機(jī)器上運(yùn)行多個MySQL服務(wù)器 40020MySQL客戶工具和API 40120.1MySQLCAPI 40220.2CAPI數(shù)據(jù)類型 40220.3CAPI函數(shù)概述 40520.4CAPI函數(shù)描述 40920.4.1mysql_affected_rows() 40920.4.2mysql_close() 41020.4.3mysql_connect() 41120.4.4mysql_change_user() 41120.4.5mysql_create_db() 41320.4.6mysql_data_seek() 41320.4.7mysql_debug() 41420.4.8mysql_drop_db() 41420.4.9mysql_dump_debug_info() 41520.4.10mysql_eof() 41620.4.11mysql_errno() 41820.4.12mysql_error() 41820.4.13mysql_escape_string() 41920.4.14mysql_fetch_field() 42020.4.15mysql_fetch_fields() 42120.4.16mysql_fetch_field_direct() 42220.4.17mysql_fetch_lengths() 42320.4.18mysql_fetch_row() 42420.4.19mysql_field_count() 42520.4.20mysql_field_seek() 42720.4.21mysql_field_tell() 42720.4.22mysql_free_result() 42820.4.23mysql_get_client_info() 42820.4.24mysql_get_host_info() 42820.4.25mysql_get_proto_info() 42920.4.26mysql_get_server_info() 42920.4.27mysql_info() 43020.4.28mysql_init() 43120.4.29mysql_insert_id() 43120.4.30mysql_kill() 43220.4.31mysql_list_dbs() 43220.4.32mysql_list_fields() 43320.4.33mysql_list_processes() 43420.4.34mysql_list_tables() 43520.4.35mysql_num_fields() 43520.4.36mysql_num_rows() 43720.4.37mysql_options() 43820.4.38mysql_ping() 43920.4.39mysql_query() 44020.4.40mysql_real_connect() 44120.4.41mysql_real_query() 44320.4.42mysql_reload() 44420.4.43mysql_row_seek() 44420.4.44mysql_row_tell() 44520.4.45mysql_select_db() 44520.4.46mysql_shutdown() 44620.4.47mysql_stat() 44720.4.48mysql_store_result() 44720.4.49mysql_thread_id() 44820.4.50mysql_use_result() 44920.4.51為什么在mysql_query()返回成功后,mysql_store_result()有時返回NULL? 45020.4.52我能從查詢中得到什么結(jié)果? 45120.4.53我怎樣能得到最后插入的行的唯一ID? 45120.4.54鏈接CAPI的問題 45220.4.55怎樣制作一個線程安全的客戶 45220.5MySQLPerlAPI 45320.5.1DBI與DBD::mysql 45320.5.2DBI接口 45320.5.3更多的DBI/DBD信息 46020.6MySQLEiffel包裝 46020.7MySQLJava連接(JDBC) 46020.8MySQLPHPAPI 46120.9MySQLC++APIs 46120.10MySQLPythonAPI 46120.11MySQLTCLAPI 46121怎樣對比MySQL與其他數(shù)據(jù)庫 46121.1怎樣對比MySQL與mSQL 46121.1.1怎樣將mSQL的工具轉(zhuǎn)換到MySQL 46421.1.2mSQL和MySQL的客戶機(jī)/服務(wù)器通訊協(xié)議有何不同 46421.1.3mSQL2.0的SQL句法與MySQL有何不同 46521.2怎樣對比MySQL與PostgreSQL 4681MySQL?的一般信息這是MySQL參考手冊;它記載了MySQL版本3.23.7-alpha。MySQL
是一個快速、多線程、多用戶和強(qiáng)壯的SQL數(shù)據(jù)庫服務(wù)器。對Unix和
OS/2
平臺,MySQL基本上是免費的;但對微軟平臺,你在30
天的試用期后必須獲得一個MySQL
許可證。詳見第三節(jié)MySQL許可證和技術(shù)支持。MySQL?主頁提供有關(guān)MySQL的最新信息。對于MySQL能力的討論,詳見1.4MySQL?的主要特征。對于安裝指南,見4安裝?MySQL。對于有關(guān)移植MySQL到新機(jī)器或操作系統(tǒng)的技巧,參見G對移植到其他系統(tǒng)的說明。有關(guān)從
3.21
版升級的信息,詳見4.16.2從一個?3.21?版本升級到?3.22?。MySQL的入門教程,見8MySQL?教程。SQL和基準(zhǔn)信息的例子,見基準(zhǔn)目錄(在分發(fā)中的'sql-bench'目錄)。對于新特征和錯誤修復(fù)一個歷史記錄,見DMySQL的變遷。對于當(dāng)前已知錯誤和功能缺陷的一張列表,見EMySQL已知錯誤和設(shè)計缺陷。未來計劃,見F我們想要在未來加入到MySQL?的計劃表(?TODO?)。這個計劃的所有貢獻(xiàn)者的名單,見CMySQL?的貢獻(xiàn)者。重要:將臭蟲(錯誤)報告、問提和建議發(fā)到郵件列表(原文未提供)。對源代碼分發(fā),mysqlbug
腳本可在‘scripts’目錄下找到。對二進(jìn)制的分發(fā),mysqlbug可在‘bin’目錄下找到。如果你有任何關(guān)于這本手冊的增補(bǔ)或修正的任何建議,請將它們發(fā)給手冊小組(docs@?)。1.1什么是?MySQL?MySQL是一個真正的多用戶、多線程SQL數(shù)據(jù)庫服務(wù)器。SQL(結(jié)構(gòu)化查詢語言)是世界上最流行的和標(biāo)準(zhǔn)化的數(shù)據(jù)庫語言。MySQL是以一個客戶機(jī)/服務(wù)器結(jié)構(gòu)的實現(xiàn),它由一個服務(wù)器守護(hù)程序mysqld和很多不同的客戶程序和庫組成。SQL是一種標(biāo)準(zhǔn)化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網(wǎng)站檢索產(chǎn)品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。MySQL
主要目標(biāo)是快速、健壯和易用。最初是因為我們需要這樣一個SQL服務(wù)器,它能處理與任何可不昂貴硬件平臺上提供數(shù)據(jù)庫的廠家在一個數(shù)量級上的大型數(shù)據(jù)庫,但速度更快,MySQL就開發(fā)出來。自1996年以來,我們一直都在使用MySQL,其環(huán)境有超過
40
個數(shù)據(jù)庫,包含
10,000個表,其中500多個表超過7百萬行,這大約有100
個吉字節(jié)(GB)的關(guān)鍵應(yīng)用數(shù)據(jù)。MySQL建立的基礎(chǔ)是業(yè)已用在高要求的生產(chǎn)環(huán)境多年的一套實用例程。盡管MySQL仍在開發(fā)中,但它已經(jīng)提供一個豐富和極其有用的功能集。MySQL的官方發(fā)音是“MyEssQueEll”(不是
MY-SEQUEL
)。1.2關(guān)于本手冊目前這本手冊有Texinfo、普通文本、Info、HTML、PostScript和
等格式的版本。因為它們的長度,PostScript和
版本沒有包括在主要的MySQL分發(fā)中,但是可從?獲得單獨的下載。主要的文檔是Texinfo文件,
HTML版本自動地用一個texi2html改進(jìn)版本生成。普通文本和Info版本用makeinfo生成。Postscript版本由texi2dvi和dvips生成。PDF
版本用pdftex生成。本手冊由DavidAxmark,Michael(Monty)Widenius,PaulDuBoisandKimAldale維護(hù)。而其他的貢獻(xiàn)者,見CMySQL貢獻(xiàn)者。1.2.1本手冊中使用的約定這本手冊使用了一定文字格式的約定:constant/固定寬度固定寬度字體用于命令名字和選擇、SQL語句、數(shù)據(jù)庫、表和列命名、C
和
Perl
代碼、環(huán)境變量。例如:“為了了解mysqladmin如何工作,用--help選項調(diào)用它”。'文件名'有包圍引號的固定寬度字體用于文件名和路徑。例如:“發(fā)行版本被安裝在'/usr/local/'目錄下”。'c'有包圍引號的固定寬度字體也用于指明字符序列。例如:“要指定一個通配符,使用'%'字符”。斜體斜體的字體被用于強(qiáng)調(diào),likethis。粗體
粗體用于存取權(quán)限名字(例如,“不要輕易授權(quán)process權(quán)限”)并表達(dá)特別強(qiáng)調(diào)。當(dāng)命令顯示出準(zhǔn)備由一個特定的程序執(zhí)行時,程序由命令所顯示的提示符指出。例如,shell>表明你從你的登錄外殼執(zhí)行一個命令,而mysql>表明你從mysql客戶執(zhí)行命令:shell>在這鍵入一個shell命令mysql>在這里鍵入一個mysql命令shell命令用
Bourne
shell語法顯示。如果你正在使用csh風(fēng)格的外殼,你可能需要用略微不同的方式發(fā)出命令。例如,設(shè)置一個環(huán)境變量和運(yùn)行一個命令的序列在
Bourne
shell語法看起來像這樣:shell>VARNAME=valuesome_command對于csh,你將執(zhí)行這樣的序列:shell>setenvVARNAMEvalueshell>some_command數(shù)據(jù)庫、表和列名字經(jīng)常必須被代入命令中。為表明這種代入是必要的,本手冊使用db_name、tbl_name和col_name。例如,你可能看到象這樣的語句:mysql>SELECTcol_nameFROMdb_name.tbl_name;這意味著如果你想輸入類似的語句,你將提供你自己數(shù)據(jù)庫、表和列的名字,也許像這樣:mysql>SELECTauthor_nameFROMbiblio_db.author_list;SQL語句可以寫成大寫或小寫的。當(dāng)本手冊顯示SQL語句時,如果討論這些關(guān)鍵字,大寫被用于特定的關(guān)鍵字(強(qiáng)調(diào)它們)而小寫被用于語句的其他部分。因此你可能在討論SELECT語句時看到如下顯示:mysql>SELECTcount(*)FROMtbl_name;另一方面,在討論COUNT()函數(shù)時,語句將寫成這樣:mysql>selectCOUNT(*)fromtbl_name;如果不有意地特別強(qiáng)調(diào),所有的關(guān)鍵字一律寫成大寫。在句法描述中,方括號('['和']')被用來表示任選的詞或子句:DROPTABLE[IFEXISTS]tbl_name當(dāng)一個語法元素由很多選擇組成時,各選擇用垂直線分開('|')。當(dāng)可能從一組選擇中選擇一個成員時,選擇在方括號內(nèi)被列出。當(dāng)必須從一組選擇中選擇一個成員時,選擇在花括號內(nèi)被列出('{'和'}'):TRIM([[BOTH|LEADING|TRAILING][remstr]FROM]str){DESCRIBE|DESC}tbl_name{col_name|wild}1.3MySQL?的歷史我們曾經(jīng)開始打算利用mSQL用我們自己的快速底層(ISAM)實用程序連接我們的數(shù)據(jù)庫表,然而,在一些測試以后我們得到出結(jié)論:mSQL對我們的需求來說不夠快速和靈活。這導(dǎo)致了一個連接我們數(shù)據(jù)庫的新SQL接口,但它幾乎有與mSQL相同的應(yīng)用編程接口。選擇這個應(yīng)用編程接口以方便第三方的代碼移植。MySQL名字的由來不是非常清楚。我們的基目錄和很多的庫和工具具有前綴“my”已超過10年歷史,然而,Monty的女兒(年輕幾歲的)也被命名"my"。因此其中哪一個原因給MySQL起了這個名字仍然是一個謎,甚至對我們。1.4MySQL?的主要特征下表描述MySQL一些重要的特征:使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)。C
、C++、
Eiffel
、
Java、
Perl、
PHP、Python、和
TCL
API。見20MySQL?客戶工具和?API??蛇\(yùn)行在不同的平臺上,見4.2MySQL支持的操作系統(tǒng)。多種列類型:1、
2、
3、4、和
8
字節(jié)長度的有符號/無符號整數(shù)、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、TIMESTAMP、YEAR、SET和ENUM類型。見7.3列類型。利用一個優(yōu)化的一遍掃描多重聯(lián)結(jié)(one-sweepmulti-join)非??焖俚剡M(jìn)行聯(lián)結(jié)(join)。在查詢的SELECT和WHERE部分支持全部運(yùn)算符和函數(shù),例如:mysql>SELECTCONCAT(first_name,"",last_name)FROMtbl_nameWHEREincome/dependents>10000ANDage>30;通過一個高度優(yōu)化的類庫實現(xiàn)SQL函數(shù)庫并且像他們能達(dá)到的一樣快速,通常在查詢初始化后不應(yīng)該有任何內(nèi)存分配。全面支持SQL的GROUPBY和ORDERBY子句,支持聚合函數(shù)(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。支持ANSISQL的LEFTOUTERJOIN和ODBC語法。你可以在同一查詢中混用來自不同數(shù)據(jù)庫的表。(與版本
3.22一樣
)。一個非常靈活且安全的權(quán)限和口令系統(tǒng),并且它允許基于主機(jī)的認(rèn)證??诹钍前踩模驗楫?dāng)與一個服務(wù)器連接時,所有的口令傳送被加密。ODBCforWindiws95。所有的
ODBC
2
.
5
函數(shù)和其他許多函數(shù)。例如,你可以用Access連接你的
MySQL服務(wù)器。見16MySQL??ODBC?支持。具備索引壓縮的快速B樹磁盤表。每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是
256
個字節(jié)(在編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴。定長和變長記錄。用作臨時表的內(nèi)存散列表。大數(shù)據(jù)庫處理。我們正在對某些包含
50,000,000
個記錄的數(shù)據(jù)庫使用MySQL。所有列都有缺省值,你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設(shè)置為他們的缺省值。為了可移植性使用
GNU
Automake
,
Autoconf
和libtool。用C和C++編寫,并用大量不同的編譯器測試。一個非??焖俚幕诰€程的內(nèi)存分配系統(tǒng)。沒有內(nèi)存漏洞。用一個商用內(nèi)存漏洞監(jiān)測程序測試過(purify)。包括myisamchk,一個檢查、優(yōu)化和修復(fù)數(shù)據(jù)庫表的快速實用程序,詳見13維護(hù)?MySQL安裝。全面支持ISO-8859-1
Latin1
字符集。例如,斯堪的納維亞的字符@ringaccent{a},@"aand@"o
在表和列名字被允許。所有數(shù)據(jù)以
ISO-8859-1
Latin1
格式保存。所有正常的字符串比較是忽略大小寫的。根據(jù)
ISO-8859-1
Latin1
字符集進(jìn)行排序(目前瑞典語的方式)。通過在源代碼中增加排序順序數(shù)組可以改變它。為了理解一個更高級的排序例子,看一看捷克語的排序代碼。MySQL支持可在編譯時指定的很多不同的字符集。表和列的別名符合
SQL92
標(biāo)準(zhǔn)。DELETE、INSERT、REPLACE和UPDATE返回有多少行被改變(受影響)。函數(shù)名不會與表或列名沖突。例如ABS是一個有效的列名字。對函數(shù)調(diào)用的唯一限制是函數(shù)名與隨后的“(”不能有空格。詳見7.31MySQL對保留字很挑剔嗎?。所有MySQL程序可以用選項--help或-?獲得聯(lián)機(jī)幫助。服務(wù)器能為客戶提供多種語言的出錯消息,詳見9.1MySQL支持哪些語言?。客戶端使用TCP/IP
連接或Unix套接字(socket)或NT下的命名管道連接MySQL。MySQL特有的SHOW命令可用來檢索數(shù)據(jù)庫、表和索引的信息,EXPLAIN命令可用來確定優(yōu)化器如何解決一個查詢。1.5MySQL的穩(wěn)定性?本小節(jié)回答這樣的問題:“MySQL的穩(wěn)定程度?”和“我能在本項目中依賴MySQL嗎?”。這里我們將試圖澄清一些問題并且回答似乎很多人關(guān)心的更重要的問題。本節(jié)已經(jīng)與從郵件列表(它在報導(dǎo)錯誤是很活躍的)收集了的信息綜合在一起。對TcX,MySQL在我們自1996中期開始的計劃中運(yùn)行沒有發(fā)生任何問題。當(dāng)MySQL被更公開地發(fā)布時,我們注意到了有一些
“未測試代碼”片斷很快地被不同于我們的查詢方式的新用戶發(fā)現(xiàn)。每個新版本比前一個都有更少的可移植性問題(盡管每個發(fā)行有許多新功能),并且我們希望有可能把下一個版本之一標(biāo)記為“穩(wěn)定”的。每個MySQL的發(fā)行都是可用的,并且只有當(dāng)用戶使用從“灰色地帶”來的代碼時才有問題,當(dāng)然,不知情的用戶不能知道灰色地帶是什么;本小節(jié)嘗試揭示我們目前已知的東西。這里的描述涉及MySQL3.
22.x
版本。所有已知和報告的錯誤都會在最新的版本被更正,除了在錯誤小節(jié)中列出的與“設(shè)計n”有關(guān)的錯誤。詳見EMySQL已知的錯誤和設(shè)計缺陷。MySQL以多層結(jié)構(gòu)和不同的獨立模塊編寫,這些模塊列舉在下面以表明它們中的每一個是如何很好地被測試過:ISAM表處理器--穩(wěn)定它管理所有在MySQL3.22和早期版本中的數(shù)據(jù)的存儲和檢索。在所有MySQL版本中,代碼中已經(jīng)沒有一個單獨(報告的)錯誤。得到一個損壞的數(shù)據(jù)庫表的唯一已知方法是在一個更新中途殺死服務(wù)器,即使這樣也不大可能破壞任何數(shù)據(jù)而不能挽救,因為所有數(shù)據(jù)在每個查詢之間被倒入(flush)到磁盤,而且從來沒有一個有關(guān)由于MySQL中的錯誤而丟失數(shù)據(jù)的錯誤報告。MyISAM
表處理器--
Beta
這是
MySQL
3.23的新功能,它大部分是基于ISAM表代碼但有很多新的有用的功能。語法處理器和詞法分析器
--穩(wěn)定很長時間沒有一個在這個系統(tǒng)中的錯誤報告。C
客戶代碼--穩(wěn)定沒有已知的問題。在早期的
3.
20版本中,在發(fā)送/接收緩沖器的大小上有一些限制。
3.21.x后,現(xiàn)在緩沖器的大小是動態(tài)的,可到一個24M的缺省值。標(biāo)準(zhǔn)客戶程序--穩(wěn)定這些包括mysql、mysqladmin和mysqlshow、mysqldump及mysqlimport。基本結(jié)構(gòu)式查詢語言--穩(wěn)定基本SQL函數(shù)系統(tǒng)、字符串類和動態(tài)內(nèi)存處理,本系統(tǒng)中未見單獨報告的錯誤。查詢優(yōu)化程序--穩(wěn)定范圍優(yōu)化程序--
Gamma
Join優(yōu)化器--穩(wěn)定鎖定--
Gamma
這是非常依賴于系統(tǒng)的,在某些系統(tǒng)上,用標(biāo)準(zhǔn)操作系統(tǒng)鎖定(fcntl())有很大問題,在這些情況下,你應(yīng)該用選項--skip-locking運(yùn)行MySQL守護(hù)程序。當(dāng)使用NFS掛載的文件系統(tǒng),已知在一些
Linux
系統(tǒng)上和SunOS上出現(xiàn)問題。Linux
線程--
Gamma
唯一發(fā)現(xiàn)的問題式fcntl()調(diào)用,它通過使用mysqld的--skip-locking選項解決。一些人已經(jīng)報告了0.5版中的鎖定問題。Solaris
2.5
+
pthreads
--穩(wěn)定我們在我們的開發(fā)工作中使用。MIT-pthreads
(其他系統(tǒng))--
Gamma
自從
3.20.15版以來,沒有報告的錯誤,而且從3.20.16開始沒有已知的錯誤。在一些系統(tǒng)上,在一些操作是相當(dāng)慢時(在每查詢之間有
1/20秒的睡眠
)有一個“功能失效”。當(dāng)然,MIT-pthreads
可能使任何事情慢一點,但是基于索引的SELECT語句通常在一個時幀內(nèi)完成,因此不應(yīng)該有一個mutex
鎖定/線程的把戲。其他線程實現(xiàn)
--
Alpha
-
Beta
移植到其他系統(tǒng)仍然是很新的并且可能有錯誤,可能是在MySQL中,但是最通常的是線程實現(xiàn)本身。LOADDATA...,INSERT...SELECT--穩(wěn)定一些人已經(jīng)認(rèn)為他們在這里發(fā)現(xiàn)了錯誤,但是這些經(jīng)常多是誤解。請在報告問題前檢查手冊!ALTERTABLE--穩(wěn)定在
3.22.12中有小的改變。DBD
--穩(wěn)定現(xiàn)在由
Jochen
Wiedmann
維護(hù)了。mysqlaccess--穩(wěn)定由
Yves
Carlier
編寫并維護(hù)。GRANT--
Gamma
MySQL
3.22.12.做了很大改變。MyODBC(使用
ODBC
SDK
2.5
)--
Gamma
它與一些程序似乎工作得很好。TcX
為付費客戶提供電子郵件的支持,但是MySQL郵件列表通常提供常見問題的答案,錯誤通常馬上用一個補(bǔ)丁修補(bǔ),對嚴(yán)重的錯誤,幾乎總是有新的版本發(fā)行。1.6順應(yīng)2000年(Year2000compliance)MySQL本身己沒有2000年有問題(
Y2K
):MySQL使用Unix時間函數(shù)并且在2069年前沒有日期問題,所有2位年份被認(rèn)為在1970年到2069年的范圍,這意味著如果在一個year類型的列中存儲的01,MySQL把它當(dāng)作2001。所有MySQL日期函數(shù)存儲在一個文件'sql/time.cc'中,并且很仔細(xì)地編碼保證是2000年安全的
。MySQL
3.22
和以后的版本,新的YEAR類型的列能在一個字節(jié)中存儲0年和1901年到2155年,并用使用2或4位顯示它們。你可以用一種不是Y2K-safe的方式使用
MySQL應(yīng)用程序來深入該問題。例如,許多老的應(yīng)用程序使用2位數(shù)字(它有二義性)而非4位數(shù)字存儲或操作年份,這個問題可能與使用諸如00或99作為“丟失的”值的提示的應(yīng)用程序混淆起來。很不幸,這些問題可能很難修復(fù),因為不同的應(yīng)用程序可能由不同程序員編寫,其中每一個可能使用了不同的約定和日期處理函數(shù)。這里是簡單的示范,顯示MySQL在
2030
年之前沒有任何日期問題。mysql>DROPTABLEIFEXISTSy2k;mysql>CREATETABLEy2k(datedate,date_timedatetime,time_stamptimestamp);mysql>INSERTINTOy2kVALUES("1998-12-31","1998-12-3123:59:59",19981231235959);mysql>INSERTINTOy2kVALUES("1999-01-01","1999-01-0100:00:00",19990101000000);mysql>INSERTINTOy2kVALUES("1999-09-09","1999-09-0923:59:59",19990909235959);mysql>INSERTINTOy2kVALUES("2000-01-01","2000-01-0100:00:00",20000101000000);mysql>INSERTINTOy2kVALUES("2000-02-28","2000-02-2800:00:00",20000228000000);mysql>INSERTINTOy2kVALUES("2000-02-29","2000-02-2900:00:00",20000229000000);mysql>INSERTINTOy2kVALUES("2000-03-01","2000-03-0100:00:00",20000301000000);mysql>INSERTINTOy2kVALUES("2000-12-31","2000-12-3123:59:59",20001231235959);mysql>INSERTINTOy2kVALUES("2001-01-01","2001-01-0100:00:00",20010101000000);mysql>INSERTINTOy2kVALUES("2004-12-31","2004-12-3123:59:59",20041231235959);mysql>INSERTINTOy2kVALUES("2005-01-01","2005-01-0100:00:00",20050101000000);mysql>INSERTINTOy2kVALUES("2030-01-01","2030-01-0100:00:00",20300101000000);mysql>INSERTINTOy2kVALUES("2050-01-01","2050-01-0100:00:00",20500101000000);mysql>SELECT*FROMy2k;++++|date|date_time|time_stamp|++++|1998-12-31|1998-12-3123:59:59|19981231235959||1999-01-01|1999-01-0100:00:00|19990101000000||1999-09-09|1999-09-0923:59:59|19990909235959||2000-01-01|2000-01-0100:00:00|20000101000000||2000-02-28|2000-02-2800:00:00|20000228000000||2000-02-29|2000-02-2900:00:00|20000229000000||2000-03-01|2000-03-0100:00:00|20000301000000||2000-12-31|2000-12-3123:59:59|20001231235959||2001-01-01|2001-01-0100:00:00|20010101000000||2004-12-31|2004-12-3123:59:59|20041231235959||2005-01-01|2005-01-0100:00:00|20050101000000||2030-01-01|2030-01-0100:00:00|20300101000000||2050-01-01|2050-01-0100:00:00|00000000000000|++++13rowsinset(0.00sec)這表示DATE和DATETIME類型將不會有未來日期的任何問題(它們處理日期到
9999
)。TIMESTAMP類型被用來存儲當(dāng)前時間,有一個僅2030-01-01的上限。TIMESTAMP在32位的機(jī)器上(有符號值)有一個從1970到2030的范圍,在64位機(jī)器上它處理時間可達(dá)2106(無符號值)。盡管MySQL是順應(yīng)Y2K的,但提供無二義性的輸入是你的責(zé)任。對于MySQL處理二義性日期的輸入(包含2位數(shù)字年份)的規(guī)則,詳見Y2K?問題和日期類型。1.7SQL一般信息和教程在MySQL郵件列表上,這本書被多人推薦:JudithS.Bowman,SandraL.EmersonandMarcyDarnovskyThePracticalSQLHandbook:UsingStructuredQueryLanguageSecondEditionAddison-WesleyISBN0-201-62623-3這本書也接受了
MySQL
用戶的一些建議:MartinGruberUnderstandingSQLISBN0-89588-644-8PublisherSybex5105238233Alameda,CAUSA1.8?有用的MySQL相關(guān)鏈接1.8.1支持MySQL的Web
開發(fā)工具PHP?:一種服務(wù)器端的嵌入HTML的腳本語言Midgard?應(yīng)用服務(wù)器:基于?MySQL?和?PHP強(qiáng)大的網(wǎng)站開發(fā)環(huán)境?SmartWorker?是一個Web應(yīng)用開發(fā)平臺XSP:e(X)tendible(s)erver(p)ages:是一個用Java?編寫的嵌入?HTML的標(biāo)簽語言(以前?XTAGS出名)dbServ:是對Web服務(wù)器的擴(kuò)充,它將到數(shù)據(jù)庫輸出集成進(jìn)你的
HTML編碼。你可以在你的輸出使用任何
HTML函數(shù),只有客戶端能阻止你。它作為獨立的服務(wù)器或作為
Java
servlet
運(yùn)行。Chili!Soft?平臺無關(guān)的ASPMySQL?+PHPdemosForwardSQL:操作的MySQL數(shù)據(jù)庫的?HTML?接口WWW-SQL:顯示數(shù)據(jù)庫信息Minivend?:Web購物車HeiTML:是HTML的服務(wù)器端擴(kuò)充,同時又是一種第四代語言語言Metahtml:一種WWW應(yīng)用程序的動態(tài)編程語言VelocityGenforPerlandTCLHawkeye?因特網(wǎng)服務(wù)器套件Linux網(wǎng)絡(luò)數(shù)據(jù)庫連接WDBI:是作為一個很好支持MySQL數(shù)據(jù)庫的通用前端的Web瀏覽器WebGroove?腳本:?HTML編譯器和服務(wù)器端腳本語言一種服務(wù)器端網(wǎng)站腳本語言怎樣在?Solaris?上用Coldfusion使用MySQLCalistra?的?ODBC?MySQL管理器Webmerger:這個CGI工具解釋文件并且生成基于一套簡單標(biāo)簽的動態(tài)輸出,通過
ODBC
提供MySQL和PostgreSQL的Ready-to-run
驅(qū)動程序。PHPclub:PHP
的技巧MySQL?和?Perl?腳本W(wǎng)idgetchuck?:網(wǎng)站工具和小配件AdCycle:廣告管理軟件用MySQL支持的數(shù)據(jù)庫設(shè)計工具:"Dezignfordatabases"是使用一個實體關(guān)系圖表的數(shù)據(jù)庫開發(fā)工具(?ERD?).1.8.2使用MySQL工具的Web服務(wù)器一個?Apache?認(rèn)證模塊TheRoxenChallengerWebserver1.8.3對其他程序的擴(kuò)充一個有源代碼的MySQL的?Delphi?接口.由
Matthias
Fichtner
編寫。TmySQL:一個通過Delphi使用MySQL的庫Delphi?TDataset部件支持BIND(Internel域名服務(wù)器)使用?MySQL?的?Sendmail擴(kuò)充通過Access使用?MySQL?流行的?iODBC?驅(qū)動程序(?libiodbc?)現(xiàn)在以開放源代碼獲得FreeODBC?主頁qpopmysql:一個允許MySQL數(shù)據(jù)庫進(jìn)行
POP3
認(rèn)證補(bǔ)丁。還有一個到PaulKhavkine的Procmail補(bǔ)丁的連接,允許任何MTA向MySQL數(shù)據(jù)庫中的用戶投遞信件。SCMDB:SCMDB
是SCM的一個插件,SCM移植
mysql的C語言庫到概念框架(scheme)。利用這個庫,框架開發(fā)者能連接到一個mySQL數(shù)據(jù)庫并且在他們的程序鐘使用嵌入式SQL。2?MySQL郵件列表及如何提問或報告錯誤2.1??MySQL?郵件列表要訂閱主
MySQL
郵件列表,送一條消息到電子郵件地址?mysql-subscribe@?。要退訂主
MySQL
郵件列表,送一條消息到電子郵件地址?mysql-unsubscribe@?。只有你發(fā)送消息的地址是有意義的,消息的主題行和正文將被忽略。如果你的回復(fù)地址不是有效的,你可以明確地指定地址。把短橫加到訂閱或退訂命令詞,隨后是你的地址,“@”由一個字符“=”代替。例如,要訂閱到j(luò)ohn@host.domain,送一條消息到mysql-subscribe-john=host.domain@。郵寄到?mysql-subscribe@?或
ezmlm
郵件列表處理器。詳細(xì)信息可在?ezmlm?網(wǎng)點得到。要想郵寄一條消息到列表本身,發(fā)送你的消息到
mysql@。然而,請千萬不要將關(guān)于訂閱或退訂的郵件發(fā)到mysql@?,因為送到該地址的任何郵件被自動地被散發(fā)到上千個其他用戶。你本地的網(wǎng)站可能有很多?mysql@?的訂戶,如果這樣,也可能有一個本地郵件列表,以便使從
發(fā)到你網(wǎng)站的消息被傳送到你的本地列表。在這種情況下,請聯(lián)系你的系統(tǒng)主管加入本地
MySQL
列表和從其中刪除。已有下列
MySQL
郵件列表:announce這是MySQL新版本和相關(guān)程序的發(fā)布通知,這是小信息量的列表,我們認(rèn)為所有的
MySQL
用戶應(yīng)該訂閱。mysql為一般
MySQL
討論的主列表。請注意一些話題最好在更專業(yè)的列表上討論。如果你郵寄到錯誤的列表上,你可能得不到回答!mysqldigest文摘形式的mysql列表,這意味著你得到所有單個消息,作為一個大郵件一天發(fā)送一次。java
討論
MySQL
和
Java
,主要關(guān)于
JDBC
驅(qū)動程序。javadigest一個文摘版本java
列表。win32
有關(guān)微軟操作系統(tǒng)上例如
Windows
NT的
MySQL所有東西。win32digest一個文摘版本win32表。myodbc
有關(guān)用
ODBC聯(lián)接
MySQL
的所有東西。myodbcdigest一個文摘版本
myodbc
列表。msql-mysql-modules
關(guān)于
MySQL中對Perl支持的一個列表。msql-mysql-modules-digest
一個文摘版本
msql-mysql-modules
列表。developer為開發(fā)
MySQL
原代碼的人的一個列表。developerdigest一個文摘版本developer列表.你可用上述的方法訂閱或退訂所有列表。在你的訂閱或退訂消息中,只是放入不是mysql的適當(dāng)郵件列表名。例如,訂閱或退訂myodbc列表,送一條消息到(原文未提供)。2.2?提問或報告錯誤在郵寄一份錯誤報告或問題前,請按下列步驟做:由尋找
MySQL
聯(lián)機(jī)的手冊開始:我們通過經(jīng)常以新發(fā)現(xiàn)的問題的解決方法更新手冊,努力使它是最新的!搜索
MySQL
郵件列表檔案:?/doc.html?你也可使用?/search.html?尋找在/下的網(wǎng)頁(包括手冊)。如果你不能在手冊或檔案發(fā)現(xiàn)答案,檢查你本地的
MySQL
專家。如果你仍然不能發(fā)現(xiàn)你問題的答案,繼續(xù)讀下一節(jié)關(guān)于怎樣發(fā)送郵件到(原文未提供)。2.3?怎樣報告錯誤或問題寫一份好的錯誤報告需要耐心,但是第一次就做得正確可節(jié)省你我的時間。本節(jié)將幫助你正確撰寫你的報告,以使你不浪費時間,也可能做一些根本不能幫助我們的事情。如果可能的話,我們鼓勵每個人使用
mysqlbug
腳本產(chǎn)生一份錯誤報告(或關(guān)于任何問題的一份報告)。mysqlbug可在源代碼分發(fā)或二進(jìn)制分發(fā)的
MySQL安裝目錄下的'bin'目錄中的'scripts'目錄下找到。如果你不能使用mysqlbug,你仍然應(yīng)該包括在本節(jié)列出的所有必要的信息。mysqlbug
腳本通過自動確定下列很多信息來幫助你生成一份報告,但是如果一些重要的東西不見了,請在你的消息中包含它!請仔細(xì)閱讀本節(jié)并且保證這里描述的所有信息包含在你的報告中。要記住,有可能回復(fù)一條包含太多的信息消息,但不回復(fù)包含極少信息的消息,因為人們認(rèn)為他們知道一個問題的原因并且假設(shè)某些細(xì)節(jié)無所謂,所以他們常常忽略事實。一個好的原則是:如果你懷疑所說的事情,繼續(xù)說!在你的報告中寫上幾行,比因為第一次沒有包含足夠的信息而被迫追問和等待答案要快上千倍,而且少些麻煩。最常見的錯誤是人們不指出他們正在使用的MySQL分發(fā)的版本號,或不指出在什么平臺上平臺安裝了
MySQL
(包括平臺版本號)。這是極其相關(guān)的信息,并且沒有它99%錯誤報告是無用的!我們經(jīng)常得到這樣的提問“為什么它不給我工作?”,然后我們發(fā)現(xiàn)所需的功能還沒有在該版本的
MySQL
中實現(xiàn),或在一份報告中描述的一個錯誤已經(jīng)在更新的MySQL
版本修正了。有時錯誤是依賴于平臺,在這種情況下,不知道平臺操作系統(tǒng)和版本號根本不可能修正任何東西。還要記住,要提供你的編譯器信息,如果它與問題有關(guān)。人們經(jīng)常發(fā)現(xiàn)錯在編譯器而認(rèn)為MySQL的問題。大多數(shù)編譯器始終都在開發(fā)中并且隨版本也逐漸變得更好。為了確定決定你的問題是否依賴于你的編譯器,我們需要知道使用什么編譯器。注意每個編譯器得問題應(yīng)該被認(rèn)為是一個錯誤,因此要報告。在錯誤報告中包含一個問題的完好描述是最有幫助的。即,你所做的導(dǎo)致這個問題的一個好的例子和確切描述的問題本身。最好的報告是包括顯示如何再次產(chǎn)生錯誤或問題的一個完整例子。如果一個程序產(chǎn)生一條錯誤信息,非常重要的是在你的錯誤報告中要包含它!如果我們試著從使用程序的檔案中找一些東西,最好是報告的錯誤消息精確地匹配程序所產(chǎn)生的。(甚至注意大小寫!)你決不應(yīng)該試圖記住錯誤消息是什么,相反,將全部消息拷貝并且粘貼進(jìn)你的報告中!如果你有一個MyODBC問題,你應(yīng)該嘗試產(chǎn)生一個
MyODBC
跟蹤文件,詳見16.6報告?MyODBC的問題.請記住,將要閱讀你報告的人有很多使用80列顯示。在產(chǎn)生報告或使用mysql命令行工具的例子時,你應(yīng)該為那些可能超出顯示可用寬度的輸出(例如,EXPLAINSELECT語句,見下面的例子)使用--vertical選項(或\G語句終止符)。請在你的報告中包括下列信息:你正在使用的
MySQL
分發(fā)的版本號(例如,
MySQL
3.22.22
)。你可以執(zhí)行mysqladminversion找到你正在運(yùn)行哪個版本。mysqladmin可以在你的MySQL安裝目錄的'bin'目錄下面找到。你正在使用的機(jī)器的制造商和型號。操作系統(tǒng)名字和版本。對大多數(shù)操作系統(tǒng),你可以通過執(zhí)行一條Unix命令uname
-a得到有關(guān)信息。有時存儲器的數(shù)量(物理和虛擬的)是有意義的,如果有疑問,包含這些值。如果你正在使用一個MySQL源代碼分發(fā)
,則需要使用的編譯器的名稱和版本號。如果你有一個二進(jìn)制代碼的分發(fā),就需要該分發(fā)的名字。如果問題在編譯期間發(fā)生,則包含準(zhǔn)確的錯誤消息,并且也包含問題發(fā)生的文件中出錯代碼周圍的一些上下文。如果任何數(shù)據(jù)庫表與問題有關(guān),包含從
mysqldump
--db_name
tbl_name1
tbl_name2
…的輸出結(jié)果。這是很容易做到的,并且它是一個獲得有關(guān)任何數(shù)據(jù)庫表信息的有效方法,將幫助我們創(chuàng)造一個匹配你所遇到問題的環(huán)境。對于與速度或SELECT語句有關(guān)的問題,你總是應(yīng)該包括EXPLAINSELECT...的輸出和至少SELECT語句產(chǎn)生的行數(shù)。你給出有關(guān)你的情況越多的信息,某些人越能幫助你。例如,下列的例子是一份很好的錯誤報告(當(dāng)然它應(yīng)該用與
mysqlbug
腳本郵寄):運(yùn)行
mysql
命令行工具的例子(注意對其輸出超過80列顯示設(shè)備的語句使用\G終止符):mysql>SHOWVARIABLES;mysql>SHOWCOLUMNSFROM...\G<output-from-SHOW-COLUMNS>mysql>EXPLAINSELECT...\G<output-from-EXPLAIN>mysql>FLUSHSTATUS;mysql>SELECT...;<AshortversionoftheoutputfromSELECT,includingthetimetakentorunthequery>mysql>SHOWSTATUS;<outputfromSHOWSTATUS>如果在運(yùn)行
MySQL
時是發(fā)生問題,嘗試一下提供一個重現(xiàn)問題的輸入腳本,該腳本應(yīng)該包括任何必要的源文件,重現(xiàn)你情況的腳本越準(zhǔn)確越好。如果你不能提供腳本,你至少應(yīng)該在你的郵件中包括從
mysqladmin
variablesextended-statusprocesslist的輸出以提供你的系統(tǒng)怎樣運(yùn)行!如果你認(rèn)為
MySQL
產(chǎn)生一個奇怪的查詢結(jié)果,不僅要包含結(jié)果,而且也要包含應(yīng)該是什么結(jié)果的意見和描述你意見所依據(jù)的理由。當(dāng)給出問題的一個例子時,最好使用在你的真實情況下的而不是一個新的變量名、表名等等。這個問題應(yīng)該與一個變量的名、表等有關(guān)!也許這些條件是苛刻的,但是安全比擔(dān)心更好。不管怎么說,提供使用你實際情況的例子應(yīng)該比較容易,并且各方面來講它對我們更好一些。如果你有不想把數(shù)據(jù)顯示別人看,你可使用ftp把它上傳到/pub/mysql/secret/。如果數(shù)據(jù)確實是高度機(jī)密的,甚至不想讓我們看到它們,那么繼續(xù),并提供使用其它名字的例子,但是請注意這是最后選擇。如果可能,包括相關(guān)程序的所有選項,例如,指明你啟動
mysqld
守護(hù)程序和運(yùn)行任何
MySQL
客戶程序所使用的選項,對象mysqld和mysql等程序和configure的選項常常是答案的關(guān)鍵和至關(guān)重要的!包括他們絕對不是一個壞主意!如果你使用任何模塊,例如Perl或PHP,請也包括它們的版本號。如果你不能產(chǎn)生一個行數(shù)少的測試,或如果測試表太大,不能寄給郵件列表(超過10行),你應(yīng)該使用mysqldump倒出(dump)數(shù)據(jù)庫表并且創(chuàng)建“README”文件描述你的問題,用tar和gzip造創(chuàng)建你的文件的一個壓縮的檔案,并且使用ftp把檔案文件轉(zhuǎn)移到/pub/mysql/secret/,然后把問題的簡短描述發(fā)到mysql@?。如果你的問題與權(quán)限系統(tǒng)有關(guān)。請包括mysqlaccess
、mysqladmin
reload的輸出和所有嘗試連接時得到的錯誤消息!當(dāng)你測試你的權(quán)限時,你應(yīng)該首先運(yùn)行mysqlaccess。在這以后,執(zhí)行
mysqladmin
reloadversion,最后你應(yīng)該嘗試用你有問題的程序進(jìn)行連接。
mysqlaccess
可在你的
MySQL
安裝目錄下的“bin”目錄找到。如果你有一個對錯誤的補(bǔ)丁程序,那最好,但是千萬別假設(shè)補(bǔ)丁程序是我們需要的一切,或即使你不提供一些必要信息如補(bǔ)丁能修正的錯誤的前提條件,就可使用它。我們可能發(fā)現(xiàn)你的補(bǔ)丁程序問題,或者我們可能根本不理解它。如果是這樣,我們不能使用它。在這里測試條件將幫助我們,這意味著補(bǔ)丁程序?qū)⑻幚硪磺锌赡艹霈F(xiàn)的情況。如果我們發(fā)現(xiàn)了補(bǔ)丁不能工作的邊界條件(即使很怪),它可能毫無用處。對錯誤是什么、為什么發(fā)生或它依賴什么的猜測通常是錯誤的。我們甚至不能在沒有首先使用一個調(diào)試器以確定一個錯誤的真正原因時做這種猜測。在你的郵件消息說明你已經(jīng)檢查了參考手冊和郵件歸檔,以便讓其他人知道你自己嘗試解決你的問題。如果你得到一個parseerror,請仔細(xì)檢查你的語法!如果你不能它發(fā)現(xiàn)有什么不對,極有可能是你當(dāng)前
MySQL
版本不支持你正在使用的查詢。如果你正在使用最新版而且?/doc.html?的參考手冊沒有涉及你正在使用的語法,
MySQL
就不支持你的查詢。在這種情況下,你唯一的選擇是自己實現(xiàn)語法并郵寄過來。如果手冊涉及你正在使用的語法,但是你有一個更舊版本的
MySQL
,你應(yīng)該檢查
MySQL
的更新歷史來找出語法何時被實現(xiàn)。見D?MySQL?變遷歷史。這時你有升級到一個更新
MySQL版本的選擇。如果你有一個這樣的問題:當(dāng)你存取某些特定數(shù)據(jù)庫表時,你的數(shù)據(jù)好像已破壞或出錯,你應(yīng)該首先用myisamchk檢查然后嘗試修復(fù)你的數(shù)據(jù)庫表。見?13?維護(hù)?MySQL?安裝.你經(jīng)常得到破壞了的數(shù)據(jù)庫表,你應(yīng)該嘗試發(fā)現(xiàn)這何時和為何發(fā)生!此時“mysql-data-directory/'hostname'.err”文件可能包含所發(fā)生事情的一些信息。請在你的錯誤報告包含這個文件的任何有用信息!如果沒有在更新當(dāng)中殺死了mysqld,通常應(yīng)該絕對不破壞數(shù)據(jù)庫表!如果你能找出mysqld為什么死掉的原因,對于我們,更容易向你提供對問題的修正!如果可能,下載最新版本的
MySQL
,并且檢查它是否解決你的問題。MySQL的所有版本都被徹底地測試并且應(yīng)該毫無問題地運(yùn)行!我們相信使一切盡可能向后兼容,并且你應(yīng)該能在數(shù)分鐘內(nèi)切換
MySQL
版本!見?4.3?要使用?MySQL?哪個版本。如果你是一個支持客戶,請直接郵寄錯誤報告到適當(dāng)?shù)泥]件列表,看看是否有其他人有這個問題的經(jīng)驗(或許已經(jīng)解決)。對于報導(dǎo)MyODBC錯誤的信息,見?16.2?怎樣報告?MyODBC?問題。一些常見問題的答案,見?18?問題和常見的錯誤。當(dāng)答案個別發(fā)給你而不是郵件列表時,總結(jié)答案并且將總結(jié)發(fā)到郵件列表以便其它人可以從你收到的幫助你解決問題的答案中受益,這被認(rèn)為是一個很好的規(guī)矩。2.4?在郵件列表上回答問題的指南如果你認(rèn)為你的答案引起廣泛的興趣,你可能想要把它寄到郵件列表中而不是直接答復(fù)提問的人。試著讓你的答案足夠普遍,讓不是郵寄者的其他人可從它獲益。當(dāng)你郵寄到郵件列表時,請保證你的回答不和以前的答案重復(fù)。嘗試總結(jié)在你的答復(fù)中的問題的主要部分,別感覺不好意思引用全部原文消息。請不要從有
HTML
模式的瀏覽器投寄郵件消息!許多用戶不用瀏覽器讀郵件!3??MySQL的許可證和技術(shù)支持本章描述
MySQL
許可證和技術(shù)支持安排,包括:我們對于非微軟和微軟操作系統(tǒng)許可證的政策;MySQL
分發(fā)遵從的版權(quán)(見3.2??MySQL?使用的版權(quán));當(dāng)申請一個許可證時,演示一個例子(見3.4?許可證實例);許可證和支持費用(見3.5??MySQL?的許可證和技術(shù)支持費用),及技術(shù)支持的好處(見?3.6?商業(yè)性支持的類型);3.1??MySQL的許可證政策針對非微軟操作系統(tǒng)如Unix或
OS/2
的許可證的正式條款在?J?針對非微軟操作系統(tǒng)的?MySQL?服務(wù)器許可證中說明?;旧希覀冊S可證政策如下:對于一般的內(nèi)部使用,MySQL通常是免費的。如果你不想,就不必付錢給我們。一個許可證是必需的,如果:你直接銷售MySQL服務(wù)器或作為其他產(chǎn)品或服務(wù)的一部分;你在某些客戶那里為了安裝和維護(hù)一個
MySQL
服務(wù)器而收費;你在不可再分發(fā)的分發(fā)中包括
MySQL并且你對該分發(fā)的某些部分收費;在必須有
MySQL
許可證的情況下,對每臺運(yùn)行mysqld服務(wù)器的機(jī)器,你都需要一個許可證,但多CPU機(jī)器按單CPU計算,并且在一臺機(jī)器上運(yùn)行
MySQL
服務(wù)器的數(shù)量或并發(fā)連接到這臺運(yùn)行一個服務(wù)器的機(jī)器的客戶數(shù)量也無限制!你在商業(yè)程序中包含客戶代碼不需要一個許可證,MySQL的客戶端存取部分不屬公共領(lǐng)域,mysql命令行客戶程序包含在
GNU
通用許可證下的
readline
庫的代碼。對于已經(jīng)購買了
10
個許可證或一種足夠級別的技術(shù)支持的消費者,我們提供附加的功能。目前,這意味著我們提供
myisampack實用工具,它能生成快速的壓縮的只讀數(shù)據(jù)庫(服務(wù)器支持讀取這樣的數(shù)據(jù)庫,但不包含用于生成它們的壓縮工具)。當(dāng)支持協(xié)議產(chǎn)生了足夠的收入時,我們將在與MySQL
服務(wù)器同樣的許可證下發(fā)行這個工具。如果你使用不需要一個許可證的
MySQL,但是你的確喜歡
MySQL
并且有志于更進(jìn)一步的開發(fā),無論如何肯定歡迎你購買一個許可證。如果你在一個商業(yè)環(huán)境中使用
MySQL以便通過它獲利,我們要求你購買一定級別的技術(shù)支持以推進(jìn)開發(fā)。我們感到,如果
MySQL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 奇瑞全球裝調(diào)工總裝理論試復(fù)習(xí)測試卷含答案
- 機(jī)床裝調(diào)維修工中級工復(fù)習(xí)試題含答案
- 寵物殯葬師考試跨專業(yè)學(xué)習(xí)的啟示試題及答案
- 2024年高中化學(xué) 第一章 認(rèn)識有機(jī)化合物 第四節(jié) 第1課時 有機(jī)化合物的分離和提純教學(xué)實錄 新人教版選修5
- 建筑方案設(shè)計招標(biāo)文件非常完善
- 企業(yè)辦公環(huán)境管理制度
- 中央空調(diào)安裝合同
- 公司福利設(shè)計方案
- 食品留樣制度
- 小額貸款公司信貸管理文件
- 碳排放量的計算方法及與電的換算公式
- GB∕T 33628-2017 風(fēng)力發(fā)電機(jī)組高強(qiáng)螺紋連接副安裝技術(shù)要求
- 股票指標(biāo)公式下載通達(dá)信益盟操盤手(長期線、短期線、中期線)
- DB63∕T 1747-2019 民用機(jī)場雷電防護(hù)工程施工質(zhì)量驗收技術(shù)規(guī)范
- 汕頭大學(xué)-阮卓豐-答辯通用PPT模板
- TPS基礎(chǔ)知識培訓(xùn)(導(dǎo)入版)ppt課件
- 第8章 塔設(shè)備設(shè)備的機(jī)械設(shè)計
- MTK 4G modem 配置
- 蒿柳養(yǎng)殖天蠶技術(shù)
- (高清版)建筑工程裂縫防治技術(shù)規(guī)程JGJ_T 317-2014
- 《測量管理體系》ppt課件
評論
0/150
提交評論