end 後面加; 具體是什麼錯誤?
begin
set pre_pools_total=100000;
end;
② 如何更改mysql數據存放路徑
MySQL默認的數據文件存儲目錄為/var/lib/mysql。假如要把MySQL目錄移到/home/data下需要進行下面幾步:
1、home目錄下建立data目錄
cd /home
mkdir data
2、把MySQL服務進程停掉
mysqladmin -u root -p shutdown
3、把/var/lib/mysql整個目錄移到/home/data
mv /var/lib/mysql/home/data/
這樣就把MySQL的數據文件移動到了/home/data/mysql下。
4、找到my.cnf配置文件
如果/etc/目錄下沒有my.cnf配置文件,請到/usr/share/mysql/下找到*.cnf文件,拷貝其中一個到/etc/並改名為my.cnf)中。命令如下:
[root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf/etc/my.cnf
5、編輯MySQL的配置文件/etc/my.cnf
為保證MySQL能夠正常工作,需要指明mysql.sock文件的產生位置。修改socket=/var/lib/mysql/mysql.sock一行中等號右邊的值為:/home/mysql/mysql.sock。操作如下:
vi my.cnf (用vi工具編輯my.cnf文件,找到下列數據修改之)
# The MySQL server
[mysqld]
port= 3306
#socket = /var/lib/mysql/mysql.sock(原內容,為了更穩妥用「#」注釋此行)
socket = /home/data/mysql/mysql.sock(加上此行)
6、修改MySQL啟動腳本/etc/init.d/mysql
最後,需要修改MySQL啟動腳本/etc/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等號右邊的路徑改成你現在的實際存放路徑:home/data/mysql。
[root@test1 etc]# vi/etc/init.d/mysql
#datadir=/var/lib/mysql(注釋此行)
datadir=/home/data/mysql (加上此行)
7、重新啟動MySQL服務
/etc/init.d/mysqlstart
或用reboot命令重啟Linux
如果工作正常移動就成功了,否則對照前面的7步再檢查一下。
還要注意目錄的屬主和許可權。
③ mysql改變數據文件存放路徑
FreeBSD主機上的mysql安裝的時候資料庫文件放在/var/db/mysql下,在Linux主機上的默認存儲位置是/var/lib/mysql/下。
如果想更換mysql的數據文件的存儲位置,則:
FreeBSD下:
#
/usr/local/etc/rc.d/mysql-server
stop(停止mysql)
#
mkdir
/other/db(建立新的數據文件目錄,也可以直接移動過來)
#
mv
/var/db/mysql
/other/db(移動數據文件)
#
ln
-s
/other/db/mysql
/var/db/mysql(建立數據文件的軟鏈接)
#
/usr/local/etc/rc.d/mysql-server
start(啟動mysql)OK!Linux下:(linux下經過測試,可以不用停止mysql而直接操作,不過如果是經常更新的資料庫還是先停止的好,停止的方法在此就不介紹了!)
#
mkdir
/data/database(建立新的數據文件目錄,也可以直接移動過來)
#
mv
/var/lib/mysql
/data/database/(移動數據文件)
#
ln
-s
/data/database/mysql
/var/lib/mysql(建立數據文件的軟鏈接)
如果您的操作用戶不是mysql,例如root用戶操作,那可能mysql對新建立的數據文件夾沒有讀取許可權,還有chown,或者是chgrp,chmod才可以!
希望能解決您的問題。
④ mysql更改my.cnf位置後,做成系統服務
恩,這個可以去機器上的注冊表裡完成以下
⑤ mysql服務啟動提示錯誤2,怎麼把服務改成別的路徑
你用管理員的方式打開命令提示符窗口,輸入該命令啟動服務 net start mysqld
⑥ 安裝mysql資料庫改變安裝路徑,可最後總是這一步出錯,怎麼修改
估計是你安裝許可權問題吧
啟動安裝包,右鍵選擇管理員許可權執行
⑦ MYSQL 的存儲過程總是錯.新手問題.求解答
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。
-----------------------------
另外可以把下面的命令放在你的rc.local裡面啟動MySQL伺服器前:
[ -x /tmp/mysql.sock ] && /pathtochk/myisamchk -of /DATA_DIR/*/*.MYI
其中的/tmp/mysql.sock是MySQL監聽的Sock文件位置,對於使用RPM安裝的用戶應該是/var/lib/mysql/mysql.sock,對於使用源碼安裝則是/tmp/mysql.sock可以根據自己的實際情況進行變更,而pathtochk則是myisamchk所在的位置,DATA_DIR是你的MySQL資料庫存放的位置。
需要注意的時,如果你打算把這條命令放在你的rc.local裡面,必須確認在執行這條指令時MySQL伺服器必須沒有啟動!檢測修復所有資料庫(表)
⑧ mysql存儲過程報錯
declare是用來定義變數和常用處理、聲明之類的關鍵字。在mysql存儲過程出現之前declare是一塊雞肋,大家常用declare來定義局部變數,我習慣性的還是使用set來定義變數(雖然是全局的,但是來的方便)。
存儲過程出現後declare的標准處理定義就變成了非常強大的工具,可以用來為存儲過程添加一些非常強大的錯誤處理機制。
首先需要提一點的是declare定義變數如果想定義varchar型的,必須註明參數最大長度,即declare varchar(20).
在這里我們不深究它用來定義參數的小細節
我們主要來研究DECLARE Condition 和 DECLARE Handler
DECLARE Condition 和 DECLARE Handler可以說是為了處理錯誤而生的。
功能上講DECLARE Condition出現的時間比較早,功能也比較簡單,它可以通過錯誤編號或者SQLSTATE來觸發一各名字,說明白一點就是當某個錯誤編號出現的時候替換一個名字給它。這樣調用的時候,我們不用去記一大串錯誤編號了。
它的標准語法我們可以在mysql的附註中找到。
DECLARE condition_name CONDITION FOR condition_value
condition_value:例子如下:DECLARE errname CONDITION FOR SQLSTATE '23000'
將返回SQLSTATE信息為23000的錯誤定名為errname
這個名字就可以被我們的絕對重頭戲DECLARE Handler調用了,在DECLARE Handler中可以定義錯誤的處理辦法,可以使用begin和end來標記語句塊,可以單獨使用rollback。處理的過程也可以定義為繼續執行和中斷存儲過程。
標准語法:DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement
handler_type: 處理的過程。
CONTINUE 繼續執行未完成的存儲過程,直至結束。(常用,默認)
| EXIT 出現錯誤即自動跳出所在的begin不再執行後面的語句。
condition_value: 處理的觸發條件
SQLSTATE [VALUE] sqlstate_value 不用說了,最常用的錯誤定義,自己去查錯誤列表吧。
| condition_name 我們剛剛定義的那個名字errnmae就是用在這里的。
| SQLWARNING 這個太好用了,從錯誤編號01開始的錯誤。相當於錯誤的通配符。
| NOT FOUND 和上面差不多,從02開始。
| SQLEXCEPTION 上面兩個中沒有包括的錯誤它都可以用來觸發,就是說你想定義只要出錯就觸發的話就定義出錯條件為SQLWARNING+SQLEXCEPTION。
| mysql_error_code 錯誤編號,和第一個不一樣,不過同樣可以在錯誤列表從中查到,是我比較常用的。
例子DECLARE errname CONDITION FOR SQLSTATE '23000'; 給導致錯誤23000的錯誤定義名字為errname
DECLARE continue handler for errname 當errname發生時作下面的處理
BEGIN 語句開始
set @x=1; 設置@x=1
請採納。