![MySQL常見錯誤問答_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/1/c0a9ea04-2bb7-46c3-86b3-cff2eeb2f30d/c0a9ea04-2bb7-46c3-86b3-cff2eeb2f30d1.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、mysql常見錯誤問答18.2.10 table 'xxx' doesn't ist 假如你得到錯誤table 'xxx' doesn't exist 或can't : 'xxx' (errno: 2) ,這意味著在當(dāng)前數(shù)據(jù)庫中沒出名為xxx 的表存在。 注重,由于mysql 用法名目和文件存儲數(shù)據(jù)庫和表,數(shù)據(jù)庫和表名件是區(qū)別大小寫的 ?。ㄔ趙in32上,數(shù)據(jù)庫和表名不是區(qū)別大小寫的,但是在查詢中對全部表的引用必需用法相同的大小寫?。?你可以用show tables 檢查你在當(dāng)前數(shù)據(jù)庫中有哪個表。見7.21 show 句法
2、(得到表、列的信息)。 18.3 mysql怎樣處理一個溢出的磁盤 當(dāng)浮現(xiàn)一個磁盤溢出的狀況時,mysql 做下列事情: 它每分鐘檢查一次看是否有足夠空間寫入當(dāng)前行。假如有足夠的空間,它繼續(xù)好似發(fā)生什么事情。 每6分鐘它將有關(guān)磁盤溢出的警告寫入日志文件。 為了緩和這個問題,你可以實行下列行動: 繼續(xù),你只需釋放足夠的空閑磁盤空間以便插入全部記錄。 放棄線程,你必需發(fā)一個mysqladmin 到線程。在下一次檢查磁盤時,線程將被放棄(在1分鐘內(nèi))。 注重,其他線程可能正在等待引起“磁盤溢出”條件的表。假如你有幾個“鎖定的”的線程,殺死正在等待磁盤溢出條件的那個線程將允許其他線程繼續(xù)。 18.4
3、如何從一個文本文件運行sql指令 普通地,mysql 客戶被交互性地用法,象這樣: shell mysql database 然而,也可以把你的sql指令放在一個文件中并且告知mysql 從該文件讀取其輸入。要想這樣做,制造一個文本文件“text_file” ,它包含你想要執(zhí)行的指令。然后如下那樣調(diào)用mysql : shell mysql database text_file 你也能啟動有一個use db_name 語句的文本文件。在這種狀況下,在指令行上指定數(shù)據(jù)庫名是不須要的: shell mysql text_file 見12.1 不同的mysql程序概述。 18.5 mysql在哪兒存儲
4、暫時文件 mysql 用法tmpdir 環(huán)境變量的值作為存儲暫時文件的名目的路徑名。假如你沒有設(shè)置tmpdir ,mysql 用法系統(tǒng)缺省值,它通常是“/tmp” 或“/usr/tmp” 。假如包含你的暫時文件名目的文件系統(tǒng)太小,你應(yīng)當(dāng)編輯safe_mysqld 設(shè)定tmpdir 指向你有足夠空間的一個文件系統(tǒng)!你也可以用法mysqld的-tmpdir 選項目設(shè)置暫時名目。 mysql 以“隱含文件”創(chuàng)建全部暫時文件。這保證了假如mysqld 被終止,暫時文件也將被刪除。用法隱含文件的缺點是你將看不到一個大的暫時文件填滿了暫時文件名目所在的文件系統(tǒng)。 當(dāng)排序(order by 或group b
5、y )時,mysql 通常用法一個或兩個暫時文件。最大磁盤空間需求是: (存儲東西的長度 + sizeof (數(shù)據(jù)庫指針) * 匹配的行數(shù) sizeof(數(shù)據(jù)庫指針) 通常是4,但是在將來對的確很大的表可能增強。 對一些select 查詢,mysql 也創(chuàng)建暫時sql表。這些沒被隱含且有“sql_*” 格式的名字。 alter table 和optimize table 在原數(shù)據(jù)庫表的同一個名目中創(chuàng)建一張暫時表。 18.6 怎樣庇護“/tmp/mysql.sock ” 假如你有這個問題,實際上任何人可以刪除mysql 通訊套接字“/tmp/mysql.sock” ,在unix的大多數(shù)版本上,你
6、能通過為其設(shè)置sticky (t)位來庇護你的“/tmp” 文件系統(tǒng)。作為root 登錄并且做下列事情: shell +t /tmp 這將庇護你的“/tmp” 文件系統(tǒng)使得文件僅能由他們的全部者或超級用戶(root )刪除。 你能執(zhí)行l(wèi)s -ld /tmp 檢查sticky 位是否被設(shè)置,假如最后一位許可位是t ,該位被設(shè)置了。 18.7 access denied 見6.6 權(quán)限系統(tǒng)如何工作。并且特殊要看6.13 引起access denied 錯誤的緣由。 18.8 怎樣作為一個普通用戶運行mysql mysql 服務(wù)器mysqld 能被任何用戶啟動并運行。為了將mysqld 改由unix
7、用戶user_name 來運行,你必需做下列事情: 假如它正在運行,停止服務(wù)器(用法mysqladmin shutdown 轉(zhuǎn)變數(shù)據(jù)庫名目和文件以便user_name 有權(quán)限讀和寫文件(你可能需要作為unix的root 用戶才干做到): shell -r user_name /path/to/mysql/datadir 假如在mysql 數(shù)據(jù)名目中的名目或文件是符號鏈接,你也將需要順著那些鏈接并轉(zhuǎn)變他們指向的名目和文件。chown -r 不能尾隨符號鏈接。 以user_name 用戶啟動服務(wù)器,或假如你正在用法mysql 3.22或以后版本,以unix root 用戶啟動mysqld 并用法-
8、user=user_name 選項,mysqld 將在接受任何銜接之前切換到以unix user_name 用戶運行。 假如在系統(tǒng)被重新啟動時,你用法mysql.server 腳本啟動mysqld ,你應(yīng)當(dāng)編輯mysql.server 以用戶user_name 運行mysqld ,或用法-user 選項調(diào)用mysqld 。(不轉(zhuǎn)變safe_mysqld 是須要的。) 現(xiàn)在,你的mysqld 進程應(yīng)當(dāng)正在作為unix用戶user_name 運行,并運行完好。盡管有一件事情沒有變幻:權(quán)限表的內(nèi)容。缺省 地(就在運行了腳本mysql_install_db 安裝的權(quán)限表后),mysql 用戶root
9、是唯一有存取mysql 數(shù)據(jù)庫或創(chuàng)建或拋棄數(shù)據(jù)庫權(quán)限的用戶。除非你轉(zhuǎn)變了那些權(quán)限,否則他們?nèi)匀槐3?。?dāng)你作為一個unix用戶而不是root 登錄時,這不應(yīng)當(dāng)阻擋你作為mysql root 用戶來存取mysql ;只要為客戶程序指定-u root 的選項。 注重通過在指令行上提供-u root ,作為root 存取mysql ,與作為unix root 用戶或其他unix用戶運行mysql 。mysql 的存取權(quán)限和用戶名與unix用戶名字是徹低分開的。唯一與unix用戶名有關(guān)的是,假如當(dāng)你調(diào)用一個客戶程序時,你不提供一個-u 選項,客戶將試圖用法你的unix登錄名作為你的mysql 用戶名舉行
10、銜接。 假如你的unix機器本身擔(dān)心全,你可能應(yīng)當(dāng)起碼在存取表中為mysql root 用戶放上一個口令。否則,在那臺機器上有一個帳號的任何用戶能運行mysql -u root db_name 并且做他喜愛做的任何事情。 18.9 怎樣重新設(shè)置一個遺忘的口令 假如你遺忘了mysql 的root 用戶的口令,你可以用下列過程復(fù)原它。 通過發(fā)送一個kill (不是kill -9 )到mysqld 服務(wù)器來關(guān)閉mysqld服務(wù)器。p 被保存在一個.pid 文件中,通常在mysql 數(shù)據(jù)庫名目中: kill /mysql-data-directory/hostname.pid 你必需是一個unix r
11、oot 用戶或運行服務(wù)器的相同用戶做這個。 用法-skip-grant-tables 選項重啟mysqld 用mysql -h hostname mysql 銜接mysqld服務(wù)器并且用一條grant 指令轉(zhuǎn)變口令。見7.26 grant 和revoke 句法。你也可以用mysqladmin -h hostname -u user password 'new password' 舉行。 用mysqladmin -h hostname flush-privileges 或用sql指令flush privileges 來裝載權(quán)限表。 18.10 文件許可權(quán)限問題 假如你有與文件許可
12、有關(guān)的問題,例如,假如當(dāng)你創(chuàng)建一張表時,mysql 發(fā)出下列錯誤消息: error: can't find file: 'path/with/filename.f' (errcode: 13) 那么可能是在mysqld 啟動時,環(huán)境變量umask 可能設(shè)置不正確。缺省的值是0660 。你可以如下啟動safe_mysqld 轉(zhuǎn)變其行為: shell umask=384 = 600 in octal shell umask shell /path/to/safe_mysqld 18.11 文件沒找到 假如你從mysql 得到error '.' not fou
13、nd (errno: 23) , can't open file: . (errno: 24) 或任何其他有errno 23 或errno 24 的錯誤,它意味著,你沒有為mysql 分配足夠的文件描述符。你能用法perror 有用程序得到錯誤號含義是什么的描述: shell perror 23 file table overflow shell perror 24 too many open files 這里的問題是mysqld 正在試圖同時保持打開太多的文件。你也可以告知mysqld 一次不打開那么多的文件,或增強mysqld 可得到的文件描述符數(shù)量。 為了告知mysqld 一次保
14、持打開更少的文件,你可以通過用法safe_mysqld 的-o table_cache=32 選項(缺省值是64)使表緩沖更小。減小max_connections 值也將削減打開文件的數(shù)量(缺省值是90)。 要想轉(zhuǎn)變mysqld 可用的文件描述符數(shù)量,修改safe_mysqld 腳本。腳本中有一條注釋了的行 -n 256 。你可以刪除'' 字符來去掉該行的注釋,并且轉(zhuǎn)變數(shù)字256轉(zhuǎn)變?yōu)閙ysqld 可用的文件描述符的數(shù)量。 ulimit 能增強文件描述符的數(shù)量,但是只能到操作系統(tǒng)強加的限制。假如你需要增強每個進程可用的文件描述符數(shù)量的os限制,參見你的操作系統(tǒng)文檔。 注重,假如
15、你運行tcsh 外殼,ulimit 將不工作!當(dāng)你哀求當(dāng)前限制時,tcsh 也將報告不正確的值!在這種狀況下,你應(yīng)當(dāng)用sh 啟動safe_mysqld ! 18.12 用法date 一個date 值的格式是'yyyy-mm-dd' 。按照ansi sql,不允許其他格式。你應(yīng)當(dāng)在update 表達式和select 語句的where子句中用法這個格式。例如: mysql select * from tbl_name where date = '1997-05-05' 為了便利,假如日期用在數(shù)字上下文,mysql 自動變換一個日期到一個數(shù)字(并且反過來也如此)。當(dāng)更
16、新時和將一個日期與timestamp 、date 或datetime 列比較的一個where 子句中,也是足夠靈便以允許一種“寬?!钡淖址袷?。(寬裕格式意味著任何標(biāo)點字符用作在部件之間的分割符。例如,'1998-08-15' 和'19980815' 是等價的。)mysql 也能變換不包含分割符的一個字符串(例如 '19980815' ),假如它作為一個日期說得通。 特別日期'0000-00-00' 可以作為'0000-00-00' 被存儲和檢索。 當(dāng)通過myodbc 用法一個'0000-00-00
17、9; 日期時,在myodbc 2.50.12和以上版本,它將自動被轉(zhuǎn)換為null ,由于odbc不能處理這種日期。 由于mysql 采取了上述的變換,下列語句可以工作: mysql insert into tbl_name (idate) values (19970505); mysql insert into tbl_name (idate) values ('19970505'); mysql insert into tbl_name (idate) values ('97-05-05'); mysql insert into tbl_name (idate
18、) values ('1997.05.05'); mysql insert into tbl_name (idate) values ('1997 05 05'); mysql insert into tbl_name (idate) values ('0000-00-00'); mysql select idate from tbl_name where idate = '1997-05-05' mysql select idate from tbl_name where idate = 19970505; mysql sele
19、ct mod(idate,100) from tbl_name where idate = 19970505; mysql select idate from tbl_name where idate = '19970505' 然而,下列將不工作: mysql select idate from tbl_name where strcmp(idate,'19970505')=0; strcmp() 是字符串函數(shù),因此它將idate 轉(zhuǎn)換為一個字符串并且實施字符串比較。它不將'19970505' 轉(zhuǎn)換為一個日期并實施日期比較。 注重,mysql 不
20、檢查日期是否正確。假如你存儲一個不正確的日期,例如'1998-2-31' ,錯誤的日期將被存儲。假如日期不能被變換到任何合理的值,在date 字段中存儲一個0 。這主要是一個速度問題并且我們認為檢查日期是應(yīng)用程序的責(zé)任,而不服務(wù)器。 18.13 時區(qū)問題 假如你有一個問題,select now() 以gmt時光返回值而不是你的本地時光,你必需設(shè)定tz 環(huán)境變量為你的當(dāng)前時區(qū)。這應(yīng)當(dāng)在服務(wù)器運行的環(huán)境舉行,例如在safe_mysqld 或mysql.server 中。 18.14 在搜尋中的大小寫敏感性 缺省地,mysql 搜尋是大小寫不敏感的(盡管有一些字符集從來不是忽視大小寫
21、的,例如捷克語 )。這意味著,假如你用col_name like 'a%' 搜索,你將得到全部以a 開頭的列值。假如你想要使這個搜尋大小寫敏感,用法象index(col_name, "a")=0 檢查一個前綴。或假如列值必需確切是"a" ,用法strcmp(col_name, "a") = 0 。 容易的比較操作( =、 、= 、 、 = 、排序和聚合)是基于每個字符的“排序值”。有同樣排序值的字符(象e,e和'e)被視為相同的字符! like 比較在每個字符的大寫值上舉行(e=e 但是e 'e)。 假
22、如你想要一個列總是被當(dāng)作大小寫敏感的方式,聲明它為binary 。見7.7 create table 句法。 假如你用法以所謂的big5編碼的中文數(shù)據(jù),你要使全部的字符列是binary ,它可行,是由于big5編碼字符的排序挨次基于 ascii代碼的挨次。 18.15 null null 值的概念是造成sql的新手的混淆的普遍緣由,他們常常認為null 是和一個空字符串'' 的一樣的東西。不是這樣的!例如,下列語句是徹低不同的: mysql insert into my_table (phone) values (null); mysql insert into my_tabl
23、e (phone) values (""); 兩個語句把值插入到phone 列,但是第一個插入一個null 值而其次個插入一個空字符串。第一個的含義可以認為是“電話號碼不知道”,而其次個則可意味著“她沒有電話”。 在sql中,null 值在于任何其他值甚至null 值比較時總是假的(false)。包含null 的一個表達式總是產(chǎn)生一個null 值,除非在包含在表達式中的運算符和函數(shù)的文檔中指出。在下列例子,全部的列返回null : mysql select null,1+null,concat('invisible',null); 假如你想要尋覓值是null
24、 的列,你不能用法=null 測試。下列語句不返回任何行,由于對任何表達式, = null 是假的: mysql select * from my_table where phone = null; 要想尋覓null 值,你必需用法is null 測試。下例顯示如何找出null 電話號碼和空的電話號碼: mysql select * from my_table where phone is null; mysql select * from my_table where phone = "" 在mysql 中,就像無數(shù)其他的sql服務(wù)器一樣,你不能索引可以有null 值的列。你必需聲明這樣的列為not null ,而且,你不能插入null 到索引的列中。 當(dāng)用load data infile 讀取數(shù)據(jù)時,空列用'' 更新。假如你想要在一個列中有null 值,你應(yīng)當(dāng)在文本文件中用法n 。字面上的詞'null' 也可以在某些情形下用法。見7.16 load data infile 句法。 當(dāng)用法ord
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代生活節(jié)奏下的胃腸疾病預(yù)防教育
- 生產(chǎn)制造中的綠色技術(shù)升級路徑與策略
- 現(xiàn)代服務(wù)業(yè)的發(fā)展趨勢及投資策略研究
- 生產(chǎn)安全監(jiān)督與危機管理一體化建設(shè)
- 生態(tài)農(nóng)業(yè)發(fā)展對商業(yè)模式的創(chuàng)新影響
- 現(xiàn)代農(nóng)業(yè)機械設(shè)備智能化國際對比研究
- 2024-2025學(xué)年高中生物 專題5 課題1 DNA的粗提取與鑒定說課稿 新人教版選修1
- 9 生活離不開他們 第一課時 說課稿-2023-2024學(xué)年道德與法治四年級下冊統(tǒng)編版001
- 2024年五年級英語上冊 Unit 4 Jenny and Danny Come to China Lesson 21 What Year Is It說課稿 冀教版(三起)
- 2024年二年級品生下冊《居家安全不大意》說課稿 山東版
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- MOOC 材料科學(xué)基礎(chǔ)-西安交通大學(xué) 中國大學(xué)慕課答案
- 中國城市居民的健康意識和生活方式調(diào)研分析報告
- 復(fù)產(chǎn)復(fù)工試題含答案
- 售后服務(wù)經(jīng)理的競聘演講
- 慢加急性肝衰竭護理查房課件
- 文件丟失應(yīng)急預(yù)案
- 全球職等系統(tǒng)GGS職位評估手冊
- 專項法律意見書(私募基金管理人重大事項變更)-詳細版
- 深圳市社會保險參保證明
- 2023年國家護理質(zhì)量數(shù)據(jù)平臺
評論
0/150
提交評論