【能使用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 $$
真的是感謝各位大大~受教了~
謝謝大家
Friday Night Funkin is a fun game that allows you to play against anyone and I've always wanted to call them and just talk to them, so for me, it deserves to spread to many people. please share.