【能使用phpmyadmin掛mysql的function與procedure嗎?】
問題是這樣子的
前一陣子拜讀了大大寫的好文章(只談mysql 教的function與procedure)
http://ithelp.ithome.com.tw/question/10032496
http://ithelp.ithome.com.tw/question/10032724
在自已主機上架了伺服器環境,安裝mysql gui
伺服器環境如下
winxp,
iis,
phpMyAdmin 2.3,
mysql 5.0
然後寫了很多的function 與 procedure在 mysql上跑
讓程式呼叫使用,也把整套系統開發完成了,能很順利的執行系統。
後來,到了要拿系統demo給user看時,發現了重大的問題,就是
掛在mysql上的function沒辦法透過虛擬主機廠商提供的
「phpMyAdmin 2.6.2-pl1 」掛上去,導致整個系統好像白寫的一樣
後來電話了解廠商的虛擬主機使用的是linux系統環境,目前沒提供
shell或連線的方式進主機操作mysql命令列,
而只有提供phpMyAdmin供使用,實在很苦惱,馬上user就要使用的系統
到這個節骨眼才發現要使用phpmyadmin掛mysql的function與procedure
掛不上去…
上google爬文了二個星期多了,也沒爬到半點辦法,
在此想請各位有經驗的大大看看,有沒有什麼辦法解決呀~
感謝呀~
看來...始作俑者是我....
所以, 這題非答不可...剛才到phpMyAdmin官網上看到其功能有:
•Intuitive web interface
•Support for most MySQL features:
◦browse and drop databases, tables, views, fields and indexes
◦create, copy, drop, rename and alter databases, tables, fields and indexes
◦maintenance server, databases and tables, with proposals on server configuration
◦execute, edit and bookmark any SQL-statement, even batch-queries
◦manage MySQL users and privileges
◦manage stored procedures and triggers
•Import data from CSV and SQL
•Export data to various formats: CSV, SQL, XML, PDF, ISO/IEC 26300 - OpenDocument Text and Spreadsheet, Word, Excel, LATEX and others
•Administering multiple servers
•Creating PDF graphics of your database layout
•Creating complex queries using Query-by-example (QBE)
•Searching globally in a database or a subset of it
•Transforming stored data into any format using a set of predefined functions, like displaying BLOB-data as image or download-link
•And much more...
有句: manage stored procedures and triggers
這樣說來, 應該可以掛上Function及Procedure才是, 不知版大能否供更詳細的錯誤訊息?
另外, Linux作業系統, 可能主機服務商不願意開放Telnet port....您或許可以協商看看直接到機房去掛程式, 或是請主機商的工程人員幫你掛上去, 或是開個虛擬桌面給你, 至少VNC是可以的.....
在我的phpmyadmin可以跑(用SQL頁籤)。
需要多做的就是改一下delimiter,讓他不要跟routine中的「;」衝到就可以了阿。
我的不行說
舉例來說
-- 我寫了一個function aaa() 不管怎樣,都回傳int(100)------------------
DELIMITER $$
DROP FUNCTION IF EXISTS test1
.aaa
$$
CREATE DEFINER=root
@localhost
FUNCTION aaa
() RETURNS int(11)
BEGIN
return 100;
END $$
DELIMITER ;
錯誤
SQL 語法:
DELIMITER $$ DROP FUNCTION IF EXISTS test1
.aaa
$$ CREATE DEFINER = root
@ localhost
FUNCTION aaa
(
) RETURNS int( 11 ) BEGIN RETURN 100
MySQL 傳回: 說明文件
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
DROP FUNCTION IF EXISTS test1
.aaa
$$
CREATE DEFINER=`root
附上虛擬空間
http://phpmy24872.pumo.com.tw/utf8/
帳號njplan
密碼artnutri
此外,我也試過直接
CREATE FUNCTION aaa
() ...
也是不行呢
是卡到陰嗎? >_<
拜請大大解惑了 ~ 感謝您
附註一點
DELIMITER $$ <---
delimiter也有試過使用「;」
仍然不行
phpMyAdmin版本請更新。
樓上 silly 與fillano大大說的是正解,我在虛擬主機那邊加上 phpMyAdmin3.33版本就ok了,直接可以上
---- (要修改原先procedure與function中 delimiter 是「;」的地方,修改再貼上執行就可以了)
DELIMITER $$
DROP PROCEDURE IF EXISTS spFoo $$
CREATE PROCEDURE spFoo ()
BEGIN
SELECT 'Foo' FROM DUAL;
END $$
真的是感謝各位大大~受教了~
謝謝大家