系統不能連接數據庫,關鍵要看兩個數據:
1、數據庫系統允許的最大可連接數max_connections。這個參數是可以設置的。如果不設置,默認是100。最大是16384。
2、數據庫當前的連接線程數threads_connected。這是動態變化的。查看max_connections、 max_connections的辦法見后。 如果 threads_connected == max_connections 時,數據庫系統就不能提供更多的連接數了,這時,如果程序還想新建連接線程,數據庫系統就會拒絕,如果程序沒做太多的錯誤處理,就會出現類似強壇的報錯信息。因為創建和銷毀數據庫的連接,都會消耗系統的資源。而且為了避免在同一時間同時打開過多的連接線程,現在編程一般都使用所謂數據庫連接池技術。但數據庫連接池技術,並不能避免程序錯誤導致連接資源消耗殆盡。這種情況通常發生在程序未能及時釋放數據庫連接資源或其他原因造成數據庫連接資源不能釋放,但強壇系統估計不會發生這種低級的編程錯誤。該錯誤的簡便的檢查辦法是,在刷新強壇頁面時,不斷監視threads_connected的變化。如果max_connections足夠大,而 threads_connected值不斷增加以至達到max_connections,那么,就應該檢查程序了。當然,如果采用數據庫連接池技術, threads_connected增長到數據庫連接池的最大連接線程數時,就不再增長了。從強壇出錯的情況看,更大的可能性是數據庫系統沒能進行適當地配置。下面提出一點建議。供參考讓你們的工程師把MySQL的最大允許連接數從默認的100調成32000。這就不會老出現連接過多的問題了。查看max_connections 進入MySQL,用命令:show variables 查看數據庫最大可連接數的變量值:max_connections 查看threads_connected 進入MySQL,用命令:show status 查看當前活動的連接線程變量值:threads_connected 設置max_connections 設置辦法是在my.cnf文件中,添加下面的最后紅色的一行: --------------------------------------------------------------------------------
[mysqld]
port=3306
#socket=MySQL skip-locking
set-variable = key_buffer=16K
set-variable = max_allowed_packet=1M
set-variable = thread_stack=64K
set-variable = table_cache=4
set-variable = sort_buffer=64K set-variable = net_buffer_length=2K
set-variable = max_connections=32000
-------------------------------------------------------------------------------- 修改完畢后,重啟MySQL即可。當然,為了確保設置正確,應該查看一下max_connections。 注意: 1、雖然這里寫的32000。但實際MySQL服務器允許的最大連接數16384; 2、除max_connections外,上述其他配置應該根據你們系統自身需要進行配置,不必拘泥; 3、添加了最大允許連接數,對系統消耗增加不大。 4、如果你的mysql用的是my.ini作配置文件,設置類似,但設置的格式要稍作變通。
常見問題集錦
MySQL總是崩潰
首先你應該試着找出問題mysqld守護進程是否死掉或你的問題是否與你的客戶有關。你可以用mysqladmin version檢查你的mysqld服務器正常執行了多長時間,如果mysqld死了,你可以在文件“mysql-data- directory/'hostname'.err”中找到其原因。
使用MySQL時的一些常見錯誤
MySQL server has gone away
常見的原因是服務器超時了並且關閉了連接。缺省地,如果沒有事情發生,服務器在 8個小時后關閉連接。你可在啟動mysqld時通過設置wait_timeout變量改變時間限制。
如果mysqld得到一個太大或不正常的包,它認為客戶出錯了並關閉連接。
Can't connect to [local] MySQL server
通常意味着沒有一個MySQL服務器運行在系統上或當試圖連接mysqld服務器時,你正在使用一個錯誤的套接字文件或TCP/IP端口。
檢查(使用ps)服務器上是否有一個名為mysqld的進程啟動
如果一個mysqld進程正在運行,可以通過嘗試這些不同的連接來檢查服務器
shell> mysqladmin version
shell> mysqladmin variables
shell> mysqladmin -h `hostname` version variables
shell> mysqladmin -h `hostname` --port=3306 version
shell> mysqladmin -h 'ip for your host' version
shell> mysqladmin --socket=/tmp/mysql.sock version
注意hostname命令使用反引號“`”而非正引號“'”;這些導致hostname輸出(即,當前主機名)被代替進mysqladmin命令中。
Host '...' is blocked錯誤
Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'
這意味着,mysqld已經得到了大量(max_connect_errors)的主機'hostname'的在中途被中斷了的連接請求。在 max_connect_errors次失敗請求后,mysqld認定出錯了(象來字一個黑客的攻擊),並且阻止該站點進一步的連接,直到某人執行命令 mysqladmin flush-hosts。
缺省地,mysqld在10個連接錯誤后阻塞一台主機。你可以通過象這樣啟動服務器很容易地調整它:
shell> safe_mysqld -O max_connect_errors=10000 &
[color=Red]鏈接過多,請聯系空間商[/color]錯誤
意味着已經有max_connections個客戶連接了mysqld服務器。
如果你需要比缺省(100)更多的連接,那么你應該重啟mysqld,用更大的 max_connections 變量值。
Out of memory錯誤
mysql: Out of memory at line 42, 'malloc.c'
mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)
ERROR 2008: MySQL client ran out of memory
注意,錯誤指向了MySQL客戶mysql。這個錯誤的原因很簡單,客戶沒有足夠的內存存儲全部結果。
首先檢查你的查詢是否正確
Packet too large錯誤
一個MySQL客戶或mysqld服務器得到一個比max_allowed_packet個字節長的包
可以通過用mysql --set-variable=max_allowed_packet=8M指定一個更大的緩沖區來啟動客戶程序。
The table is full錯誤
這個錯誤發生在內存臨時表變得比tmp_table_size字節大時。
Commands out of sync in client錯誤
正在以錯誤的次序調用客戶函數!
Ignoring user錯誤
Found wrong password for user: 'some_user@some_host'; Ignoring user
這意味着在mysqld啟動時或在它再次裝載權限表時,它在user表中找到了一個有一個無效口令的條目。結果,條目簡單地被權限系統忽略。
Table 'xxx' doesn't exist錯誤
數據庫和表名件是區分大小寫的!可以用SHOW TABLES檢查你在當前數據庫中有哪個表。
從一個文本文件運行SQL命令
可以把SQL命令放在一個文件中並且告訴mysql從該文件讀取其輸入:創造一個文本文件“text_file”,它包含要執行的命令。然后如下調用mysql:
shell> mysql database < text_file
或
shell> mysql < text_file
啟動有USE db_name語句的文本文件。
怎樣重新設置一個忘記的口令
如果忘記了MySQL的root用戶的口令,可以使用如下方法恢復:
通過發送一個kill(不是kill -9)到mysqld服務器來關閉mysqld服務器。pid 被保存在一個.pid文件中,通常在MySQL數據庫目錄中:
kill `cat /mysql-data-directory/hostname.pid`
你必須是一個UNIX root用戶或運行服務器的相同用戶做這個。
使用--skip-grant-tables選項重啟mysqld。
用mysql -h hostname mysql連接mysqld服務器並且用一條GRANT命令改變口令。見7.26 GRANT和REVOKE句法。也可以用mysqladmin -h hostname -u user password 'new password' 進行。
用mysqladmin -h hostname flush-privileges或用SQL命令FLUSH PRIVILEGES來裝載權限表。
使用DATE列的問題
DATE值的格式是'YYYY-MM-DD'。
改變一張表中列的順序
在一個應用程序中,應該決不基於他們的位置使用SELECT * 檢索列,因為被返回的列的順序永遠不能保證;對數據庫的一個簡單改變可能導致應用程序相當有戲劇性地失敗。
可以使用如下方法改變:
以正確的列順序創建一張新表。
執行INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.
刪除或改名old_table。
ALTER TABLE new_table RENAME old_table。
數據庫復制
MySQL(至今)沒有數據庫復制,但是有一些如何實現的信息。
復制一個數據庫最一般的方法是使用更新日志。
MySQL 許可常見問題(MySQL Licensing FAQ)
[url]http://www.chinaunix.net[/url] 作者:yejr 發表於:2006-11-15 09:52:02
【發表評論】【查看原文】【MySQL討論區】【關閉】
譯文出自: [url]http://imysql.cn/?q=node/150[/url], 譯者:葉金榮, 轉載請注明.
原文摘錄自: [url=http://dev.mysql.com/tech-resources/articles/mysql- network-and-you.html]http://dev.mysql.com/tech-resources/articles/mysql-network -and-you.html,作者: Arjen Lentz(Community Relations Manager of MySQL AB)
End users
終端用戶
If you are an end-user, you can use a GPL licensed server and will not require a commercial license to use MySQL. This applies even if you are an ISP or if you sell services on your e-commerce web site, since you are not distributing anything. If you are distributing anything, please see under the Developer heading below.
如果你是一個終端用戶,則你可以使用GPL服務器而無需使用商業許可的MySQL.不管你是ISP還是電子商務銷售服務網站,都適用這個原則,因為你沒有分發(分發給其他人)任何東西.如果你分發了,那么看看下面的開發者的前面那部分.
If you want to take advantage of MySQL Network for your servers, you can get a yearly subscription. In case your organization is apprehensive about GPL licensed software, you can then ask for a commercial (non-GPL) license as an optional (but free) extra.
如果你想讓MySQL Network提供更多高級服務的話,就可以每年訂閱MySQL Network的服務.如果你(所在的組織)對GPL許可下的軟件不放心的話,就可以索要一個商業許可(非GPL)作為額外的選擇(但免費).
If you later decide that you no longer want to subscribe to MySQL Network, you can continue to use GPL licensed servers.
如果你將來決定不再訂閱MySQL Network的服務,則可以繼續使用GPL許可下的服務器.
Developers (including ISVs/OEMs)
開發者(包括分公司(ISV)和代工(OEM))
If you build an application, and link it with MySQL code, check out these possibilities:
如果你開發了一個應用軟件,並且和MySQL的代碼連接,則看看下面的幾個可能性:
1. Are you only using your application in-house?
→You are actually an end-user. See above.
1. 你是否只是在內部使用這個軟件?
→ 那么你實際上是終端用戶,看上面.
2. Are you distributing your application as Open Source under the GPL (free or for money, doesn't matter)?
→You may link with any GPL licensed MySQL code: client library or embedded server. The end-users of your software can, at their option, subscribe to MySQL Network.
2. 你是否把你的應用軟件在GPL許可下作為開源(是否免費無所謂)分發了?
→ 你可能和GPL許可下的MySQL代碼連接了: 客戶端庫或者嵌入的服務器. 則應用軟件的終端客戶可以自行選擇是否要訂閱MySQL Network服務.
3. Are you distributing your application and only linking with the MySQL client libraries, not under GPL but with another Open Source license we allow? (see the FLOSS License Exception)
→Same as the previous point 2.
3. 你是否在非GPL許可但遵循其他開源許可([url=http: //www.mysql.com/company/legal/licensing/foss-exception.html]查看FLOSS例外許可) 下分發了你的應用軟件,並且只是和MySQL客戶端庫連接?
→ 看看上面的第2點.
4. Are you distributing your application but it is not Open Source, and you want to link with the MySQL server?
Contact MySQL AB to discuss an OEM agreement for commercial licenses. Embedding the MySQL server with your application can be an excellent idea, as it makes things very easy and cost-effective for your customers. And of course there are volume discounts.
4. 你以非開源的方式分發了應用軟件,並且你想要連接到MySQL服務器上?
→ 聯系MySQL AB討論一下用OEM協議作為商業許可.把MySQL服務器嵌入到你的應用軟件中也許是一個絕妙的主意,因為這么做讓你的客戶非常方便並且效率很高.當然了,他們可以享受很多優惠.
5. Are you certifying your application, whether it's open source or not, for use with MySQL Network?
You can sign up to be a MySQL Network Certified Partner. This program helps you certify your software as compatible with MySQL Network and is quite effective when you will have your customers buy MySQL Network. There is a cost associated with this program, but the basic level is very affordable and it also gives you MySQL Network for yourself, which includes access to the knowledge base and the advisors.
As partner, you get listed on our partner web site, and your application will have a strategic advantage over competitors as it is certified for MySQL Network. There are some additional rules that govern the partner program.
5. 你認證了應用軟件,不管是開源也好還是用MySQL Network服務?
→ [url=http://solutions.mysql.com/program/tech-partners.html] 你可以注冊成為MySQL Network的認證合作伙伴.這有助於你在需要客戶購買MySQL Network產品時,保證你的程序和 MySQL Network的產品兼容性更好而且效率更高.同時這是有相關價值的,但都是從MySQL Network能獲得的基礎的知識,包括訪問知識庫和建議.作為合作伙伴,在我們的合作伙伴列表網站列表上能看得到,並且由於有了MySQL Network認證可以提高你的戰略競爭優勢.還
有一些其他附加的規則來管理合作伙伴.
Your customers may want to subscribe to MySQL Network, for which your software will be tested and certified, but you don't have to worry about individual licensing or anything like that. So this is the really big new thing for developers of closed-source software
who want to support MySQL.
你的客戶可能想要訂閱MySQL Network,則你的軟件會被測試和認證,但不必擔心諸如個別許可的事情.這對那些想要支持MySQL的封閉源碼開發者來說是件大好事.
Of course, you can always sign up as a MySQL Network Certified Partner even if your situation is not as described above. You would get the benefits of MySQL Network as well as the partnership extras, for a decent price.
當然,就算你的情況沒有在上述情況中,你也可以只注冊作為MySQL Network的認證合作伙伴.你可以作為額外的合作伙伴從MySQL Network中獲得利益,比如較低的價格.
I won't go into the definitions of "linking" or "distribution" here. We follow what the GNU General Public License text and the FSF (Free Software Foundation, the people who wrote the GPL license) say about this (Frequently Asked Questions about the GNU GPL). Lawyers also have (varying!) opinions on this. If you are uncertain but don't want to pay a lawyer, please contact MySQL.
在這里我不想進一步定義"連接"或"分發".我們遵守GNU通用公共許可以及FSF(自由軟件基金會的奠基者,他寫的GPl許可)所闡述的(GNU GPL FAQ部分).我們的律師在也已經確定這點了.如果你還不確定,又不願意請律師,請聯系MySQL.
KimSeong Loh wrote:
> The article listed some possibilities for Developers.
>
> Case 4: Does "link with the MySQL server" means using MySQL server in embedded mode only or
> does it include using the client libraries to connect to a MySQL database server through TCP/IP or
> other protocol?
> For example: a java application using Connector/J or an application using ODBC.
>那篇文章列出了適用於開發者的一些可能性.
>情況4: "和MySQL服務器連接"是否指只是嵌入式的MySQL服務器或者是否包括使用客戶端庫通過TCP/IP或其他協議連接到MySQL數據庫服務器嗎?
>例如,一個使用Connector/J連接的java應用軟件,或者使用ODBC的應用軟件.
It is about linking with MySQL code.
It definitely applies to libmysqld (the embedded server), as the server is GPL.
It also applies to the libmysqlclient (the client library), in case the application is not open source; the client lib is GPL, but
has the licensing exception to allow other open source licensed apps to link with it too.
這主要是關於和MySQL源代碼的連接.
它顯然適用於 libmysqld(嵌入的服務器),因為服務器是GPL的.
如果應用軟件不是開源的話,它也適用於 libmysqlclient(客戶端庫);如果客戶端庫是GPL的,但是有例外的許可允許其他開源的許可下的應用軟件也可以連接它.
> Case 5: Certifying the application for use with MySQL Network.
> Does it mean distributing a certified application (non-GPL) do not need a commercial license to use
> the MySQL client library or drivers such as Connector/J or MyODBC?
>情況5: 讓應用軟件通過MySQL Network的認證.
>是否意味着如果分發應用軟件(非GPL)時,就無需購買一個商業許可才能使用MySQL客戶端庫或者類似 Connector/J 及 MyODBC 那樣的驅動?
Certified apps have nothing to do with commercial licenses as such.
It is about certifying that the app works with the certified server. This allows the app vendor to specify a known suitable
environment for the application, and provide support based on that.
讓應用軟件通過MySQL Network認證跟是否需要商業許可沒有任何關系.
這是關於讓你的認證應用軟件和認證服務器一起工作.它允許應用軟件銷售商為軟件指定一個更合適的環境,並且基於此提供支持.
> What about cases where the developers create custom applications (non open source) for each
> customers?
> In the case of distributing a php application (non open source) which connects to a MySQL database
> through php mysql api, does this falls under case 3, case 4 or case 5? Definitely not case 1 and 2.
>如果是開發者為不同的客戶定制應用軟件(非開源),這種情況該怎么辦?
>如果把一個通過php mysql api連接到MySQL數據庫的php應用軟件分發了(非開源),那么是對應哪一種情況呢?第3,第4,還是第5種?顯然不會是第1,2種.
Again, it primarily comes down to what requirements an application builder has.
It makes sense to be a MySQL partner for MySQL Network, so you have those resources available, the exposure on the MySQL web site, and providing the known tested environment to users.
再說一次,這主要回歸到應用軟件創建者的要求.
這主要是對MySQL Network的合作伙伴才有意義,所以你才有這些可用資源,MySQL網站上那些公開的資源,以及為用戶提供已知的測試環境.
We could debate the (sometimes murky) legal bottom line, but that's not it's really about.
MySQL Network for end users, and network/oem partnerships for developers, offers an environment that provides real value for
all those involved. It's also very affordable.
Inside any of these offers, licensing effectively becomes a non-issue. So why waste time on it?
我們來討論一下合法的底線(有時候是晦澀,不明確的),不過這不是真正相關的問題.
MySQL Network為終端用戶,並且網絡/OEM合作伙伴為開發者,提供了一個包括真正價值的環境.
基於以上各種因素,許可證的有效性已經不是問題了,為什么還要浪費時間呢?
注:由於本人的水平有限及對MySQL License理解存在一定局限,翻譯可能有誤,敬請指出,謝謝!
安裝,啟動與卸載Mysql系統服務(MYSQL常見問題)
作者:love感冒 日期:2006-05-11
字體大小: 小 中 大
將Mysql添加到Windows系統服務中:
1.、 安裝服務。
在Windows2000下,安裝完成后,並沒有把MySQL安裝成服務,我們必須執行下面的語句把MySQL注冊為服務:installdir\mysql\bin\mysqld-nt –-install。
Windows98下沒有服務的概念,所以不用安裝服務。
2.、 啟動服務
在Windows2000下,安裝服務后可以啟動MySQL服務:net start mysql。
在Windows98下,可以用下面的命令啟動服務:c:\mysql\bin\mysqld,服務啟動后在后台運行,並沒有界面。
3.、 停止服務
在Windows2000下,可以通過下面的命令停止MySQL服務:net stop mysql。
在Windows98下,可以通過下面命令停止服務:C:\> C:\mysql\bin\mysqladmin -u root shutdown
4、 卸載服務
可以通過下面的命令卸載MySQL服務:installdir\mysql\bin\mysqld-nt –-remove。
經過上面的安裝就可以使用了,可以把我們系統空的數據庫內建到mySQL數據目錄即可,缺省數據庫目錄在installdir\mysql\data。
訪問MySQL數據庫可以通過dbExpress組件,dbExpress組件是一組高效的數據庫訪問組件,只要改變連接串,我們就可以直接把數據源連接到MSSQLServer等數據庫。
安裝與卸載windows系統服務有專門軟件,如果需要,mail to me:wangyihust@163.com
刪除了原來的mysql4.1系統服務后,下載了一個5.0的non-install版本,將其添加到windows系統服務后,為什么無法啟動?-1056錯誤
1.報錯:Can't find messagefile 'F:\Program Files\mysql\share\english\errmsg.sys'
原因:原來的4.1版本安裝在F:\Program Files\mysql目錄;而現在的5.0版本在F:\database目錄
解決方法:在c:\winnt\目錄下找到my.ini文件,修改或刪除之
2.報錯:ready for connections.
Version: '5.0.21-community-nt' socket: '' port: 3306 MySQL Community Edition (GPL)
原因:socket為空,沒有配置mysql;或者端口已經占用
解決方法: \mysql\bin目錄下運行MySQLInstanceConfig.exe配置mysql實例
如何更改Win2000服務MySQL屬性中的可執行文件路徑!
開始時在D盤裝了MySQL,后來卸載后,格式化D盤,再次安裝,路徑與原路徑不同,不能通過“net start mysql”啟動。查看win2000服務中MYsql的屬性,可執行文件路徑在位於D盤。現在怎么樣更改,或者從服務項去掉Mysql?
注冊表里HKEY_LOCAL_MECHINE---SYSTEM ---CurrentControlSet里
啟動MYSQL服務時出錯的幾種解決方法
1
安裝MYSQL后更改了ROOT的密碼后用
net startmysql
啟動時我就遇到了這樣的問題.使用以下命令后
c:\mysql\bin\mysqladmin-u root -p shutdown
再net start mysql就沒有這個錯誤提示了!
*************
2
MySQL的1067錯誤
Q:我的Mysql碰到了 1067 錯誤
錯誤信息為:
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
A:在我的機上的解決辦法是:
修改%windir%\my.ini,增加
[mysqld]
#設置basedir指向mysql的安裝路徑
basedir=D:\Program\Tools\mysql
datadir=D:\Program\Tools\mysql\data
*************
3
已經弄好了!!!
好像是這樣……
mysql_install_db腳本只是在初次安裝時才需要運行一次,之后就不用再運行了,不知道是
不是這么回事.我把mysql.server拷貝至/etc/rc.d/init.d/中,運行chkconfig mysql.ser
ver,至此mysql服務器每次開機自動啟動,只要設置好PATH,在命令行上輸入mysql就一切搞
定!
看來摸索的過程實在是痛苦啊,這已經折磨我好幾天了……
*************
4
問:我的Mysql碰到了 1067 錯誤
錯誤信息為:
A system error has occurred.
System error 1067 has occurred.
The process terminated unexpectedly.
答:
解決辦法:
1.檢查你的Mysql目錄有沒有給系統的System用戶權限。
2.刪除掉你的 %WINDOWS%/my.ini 文件。
3.檢查你的 c:/my.cnf 文件配置是否正確。
*************
5
【☆☆☆ MySql概要說明 ☆☆☆】
MySql的默認安裝目錄是c:mysql,安裝結束后沒有任何提示信息說安裝結束,請點Finish
按鈕之類的話,直接就退出了。如果需要安裝到其他目錄,建議先安裝到c:mysql,然后再
整個目錄move到自己希望的地方,例如移動到d:mysql 之后,需要編輯 d:mysqlmy-examp
le.cnf (*.cnf的文件在Windows 2000中會被注冊成為 SpeedDial文件,在資源管理器中
無法操作,要用命令行來啟動notepad編輯,例如運行notepadd:mysqlmy-example.cnf ,
但是這個文件是UNIX系統下的文本文件格式,在notepad中不能正確換行,可以用write打
開編輯,
或者用write打開后保存一次,再用notepad就可以編輯了。)找到basedir一行,去掉前面
的“#”號注釋,將后面的路徑改為移動后的目錄(目錄分隔符要用斜線而不是反斜線),
然后另存為:c:my.cnf
用服務方式啟動的MySql如果用 net stop mysql 來停止,會得到一條 出錯消息,例如:
C:>net stop mysql
MySql 服務正在停止.
系統出錯。
系統發生 1067 錯誤。
進程意外終止。
MySql 服務已成功停止。
這沒有關系,MySql確實已經停止了。但是假如不希望看到任何出錯消息
的話,可以用以下的命令來停止:
C:>mysqlbinmysqladmin -u root shutdown
如果沒有任何提示信息,說明MySql已經成功停止了。
需要說明的是MySql雖然號稱安裝簡單,易於使用,但是這畢竟是基於SQL的數據庫管理系
統,所以如果不是對SQL十分精通的話恐怕也不能拿它來做什么
**************
6
mysql服務無法啟動的解決方法
mysql服務無法啟動
我的操作系統是 win xp
無論安裝何版本的mysql,在管理工具的服務中啟動mysql服務時都會在中途報錯
內容為:在 本地計算機 無法啟動mysql服務 錯誤1067:進程意外中止
經過多方求教,得解決方法如下
查找系統(后來驗證應該為windows目錄)目錄下的my.ini文件,編輯內容(如果沒有該文件
,則新建一個),至少包含basedir,datadir這兩個基本的配置。
[mysqld]
# set basedir to installation path, e.g., c:/mysql
# 設置為MYSQL的安裝目錄
basedir=D:/www/WebServer/MySQL
# set datadir to location of data directory,
# e.g., c:/mysql/data or d:/mydata/data
# 設置為MYSQL的數據目錄
datadir=D:/www/WebServer/MySQL/data
另外,要主意
[WinMySQLadmin]
Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe
user=root
password=xxxxxxxx
#以上是設置WinMySQLadmin的配置
[Client]
user=root
password=xxxxxxxx
hehe~ 解決了
**************
7
剛剛弄好Mysql 『關鍵字 1067錯誤』
比較郁悶,竟然沒有想到安裝個Mysql也會出錯,錯誤代碼是1067 安裝卸載了好幾次,就
是不行,而且把一些禁用了的服務都打開了,但是還是不行。最后我是這樣解決的:
在C:\windows里找一找my.ini 然后刪除 然后再啟動winmysqladmin.exe界面配置mysql,
保存my.ini就可以了 啟動mysql試試 呵呵
***************
8
mysql 錯誤 1067: 進程意外終止
這個問題困擾了一個早晨,非常郁悶!以前我在裝mysql的時候從來沒有遇到過,可是現在
庄這個高版本的就有問題了,我換我裝過的低版本的還是一樣的問題(最關鍵的是操作系
統都是一樣的)。在windows2000的服務里面啟動mysql服務可是總是彈出“錯誤 1067: 進
程意外終止”!
我感覺問題在配置文件,於是就重新寫了my.ini,啟動還是一樣的效果,我在google上查
找無果,崩潰狀態!就在此時眼前一亮,一位高人的指點是我豁然開朗,你的ini文件有否
放到windows目錄下,我從個人目錄的windows目錄下,將其拷貝到系統windows目錄下,啟
動服務,ok!!!
我實在是不滿足,為什么有不同呢,我的另外一台機子上裝的是4.0.18的版本,它的my.i
ni就是放在用戶目錄下的windows目錄下的,而且也運行正常,我現在有點迷惘,人往往在
解決了問題以后很少去思考,所以我現在有點想放棄的感覺,如果現在不會得到答案我想
這個在去思考解決基本上是不可能了:)
1005:創建表失敗
1006:創建數據庫失敗
1007:數據庫已存在,創建數據庫失敗
1008:數據庫不存在,刪除數據庫失敗
1009:不能刪除數據庫文件導致刪除數據庫失敗
1010:不能刪除數據目錄導致刪除數據庫失敗
1011:刪除數據庫文件失敗
1012:不能讀取系統表中的記錄
1020:記錄已被其他用戶修改
1021:硬盤剩余空間不足,請加大硬盤可用空間
1022:關鍵字重復,更改記錄失敗
1023:關閉時發生錯誤
1024:讀文件錯誤
1025:更改名字時發生錯誤
1026:寫文件錯誤
1032:記錄不存在
1036:數據表是只讀的,不能對它進行修改
1037:系統內存不足,請重啟數據庫或重啟服務器
1038:用於排序的內存不足,請增大排序緩沖區
1040:已到達數據庫的最大連接數,請加大數據庫可用連接數
1041:系統內存不足
1042:無效的主機名
1043:無效連接
1044:當前用戶沒有訪問數據庫的權限
1045:不能連接數據庫,用戶名或密碼錯誤
1048:字段不能為空
1049:數據庫不存在
1050:數據表已存在
1051:數據表不存在
1054:字段不存在
1065:無效的SQL語句,SQL語句為空
1081:不能建立Socket連接
1114:數據表已滿,不能容納任何記錄
1116:打開的數據表太多
1129:數據庫出現異常,請重啟數據庫
1130:連接數據庫失敗,沒有連接數據庫的權限
1133:數據庫用戶不存在
1141:當前用戶無權訪問數據庫
1142:當前用戶無權訪問數據表
1143:當前用戶無權訪問數據表中的字段
1146:數據表不存在
1147:未定義用戶對數據表的訪問權限
1149:SQL語句語法錯誤
1158:網絡錯誤,出現讀錯誤,請檢查網絡連接狀況
1159:網絡錯誤,讀超時,請檢查網絡連接狀況
1160:網絡錯誤,出現寫錯誤,請檢查網絡連接狀況
1161:網絡錯誤,寫超時,請檢查網絡連接狀況
1062:字段值重復,入庫失敗
1169:字段值重復,更新記錄失敗
1177:打開數據表失敗
1180:提交事務失敗
1181:回滾事務失敗
1203:當前用戶和數據庫建立的連接已到達數據庫的最大連接數,請增大可用的數據庫連接數或重啟數據庫
1205:加鎖超時
1211:當前用戶沒有創建用戶的權限
1216:外鍵約束檢查失敗,更新子表記錄失敗
1217:外鍵約束檢查失敗,刪除或修改主表記錄失敗
1226:當前用戶使用的資源已超過所允許的資源,請重啟數據庫或重啟服務器
1227:權限不足,您無權進行此操作
1235:MySQL版本過低,不具有本功能。
MySQL性能設置
公司網站訪問量越來越大,MySQL自然成為瓶頸,因此最近我一直在研究 MySQL 的優化,第一步自然想到的是 MySQL 系統參數的優化,作為一個訪問量很大的網站(日20萬人次以上)的數據庫系統,不可能指望 MySQL 默認的系統參數能夠讓 MySQL運行得非常順暢。
通過在網絡上查找資料和自己的嘗試,我認為以下系統參數是比較關鍵的:
(1)、back_log:
要求 MySQL 能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,然后主線程花些時間(盡管很短)檢查連接並且啟動一個新線程。
back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。只有如果期望在一個短時間內有很多連接,你需要增加它,換句話說,這值對到來的TCP/IP連接的偵聽隊列的大小。你的操作系統在這個隊列大小上有它自己的限制。試圖設定back_log高於你的操作系統的限制將是無效的。
當你觀察你的主機進程列表,發現大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待連接進程時,就要加大 back_log 的值了。默認數值是50,我把它改為500。
(2)、interactive_timeout:
服務器在關閉它前在一個交互連接上等待行動的秒數。一個交互的客戶被定義為對 mysql_real_connect()使用 CLIENT_INTERACTIVE 選項的客戶。 默認數值是28800,我把它改為7200。
(3)、key_buffer_size:
索引塊是緩沖的並且被所有的線程共享。key_buffer_size是用於索引塊的緩沖區大小,增加它可得到更好處理的索引(對所有讀和多重寫),到你能負擔得起那樣多。如果你使它太大,系統將開始換頁並且真的變慢了。默認數值是8388600(8M),我的MySQL主機有2GB內存,所以我把它改為 402649088(400MB)。
(4)、max_connections:
允許的同時客戶的數量。增加該值增加 mysqld 要求的文件描述符的數量。這個數字應該增加,否則,你將經常看到 [color=Red]鏈接過多,請聯系空間商[/color] 錯誤。 默認數值是100,我把它改為1024 。
(5)、record_buffer:
每個進行一個順序掃描的線程為其掃描的每張表分配這個大小的一個緩沖區。如果你做很多順序掃描,你可能想要增加該值。默認數值是131072(128K),我把它改為16773120 (16M)
(6)、sort_buffer:
每個需要進行排序的線程分配該大小的一個緩沖區。增加這值加速ORDER BY或GROUP BY操作。默認數值是2097144(2M),我把它改為 16777208 (16M)。
(7)、table_cache:
為所有線程打開表的數量。增加該值能增加mysqld要求的文件描述符的數量。MySQL對每個唯一打開的表需要2個文件描述符。默認數值是64,我把它改為512。
(8)、thread_cache_size:
可以復用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,為了提高性能可以這個變量值。通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用。我把它設置為 80。
(10)、wait_timeout:
服務器在關閉它之前在一個連接上等待行動的秒數。 默認數值是28800,我把它改為7200。
優化參數:http://www.databasejournal.com/features/mysql/article.php/10897_1402311_2
注:參數的調整可以通過修改 /etc/my.cnf 文件並重啟 MySQL 實現。這是一個比較謹慎的工作,上面的結果也僅僅是我的一些看法,你可以根據你自己主機的硬件情況(特別是內存大小)進一步修改。
從sql導出到mysql的方法很多,現介紹一種無需編程,直接利用sql和mysql里的圖形界面進行導入導出的簡單方法。
前提是已經安裝了sqlserver客戶端和mysql的圖形界面管理工具phpmyadmin。
在控制台根目錄下打開sqlserver企業管理器,新建sqlserver組,根據自己的情況進行選擇;然后新建sqlserver 注冊,進行對sqlserver的連接。准備妥當后,下面就開始了:
首先打開數據轉換服務,新建包,打開DTS界面,在連接中選擇數據源進行配置。再選擇將要轉換到的目的文件,這里我選的 Textfile(destination),選擇好文件的存放位置之后,我們來新建一個任務。這里我們只選擇轉換數據任務,將帶有“選擇源連接”“選擇目的連接”的鼠標分別選中數據源和目的之后,我們對新生成的連接進行定義,在其屬性中將源,目的,轉換依次定義。
執行任務,提示成功。保存任務。然后在新建的任務上導出數據,有向導提示,其中一項選擇“從源數據庫復制表和視圖”。
這一步已經把數據導出到目的文件中。
下一步在mysql中新建表,與將要導入的結構保持一致時,直接選取“從文本文件中提取數據,插入到數據表:”,將選項添好后,“發送”就可以了,瀏覽一下,數據已導入了。若要導入的表已經存在,且屬性名也不同,這時就先建一個與要導入的數據相同結構的表並導入數據(按剛才的進行就可以了),然后在 mysql中導出“數據和結構”,得到sql語句,將其在文本文件中編輯,利用文本編輯器的替換功能,將表名修改,列名加入,最后將其粘貼在要導入表的執行sql語句的地方,執行一下,數據便導入了。
若過程中出現錯誤,請仔細檢查配置的選項,確保正確。