MySQL Administrator是MySQL管理的图形界面,我用这个建存储程式,不知道怎么建不了,建一个最简单的语句也还是不行,执行后提示出错。程式如下:
DELIMITER $$
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
SELECT * FROM document;
END
DELIMITER ;
WINCODB是数据库,document是数据表,aa是存储程式名
DELIMITER $$
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
SELECT * FROM document;
END
DELIMITER ;
WINCODB是数据库,document是数据表,aa是存储程式名
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
SELECT * FROM document;
END$$
DELIMITER ;
http://dev.mysql.com/doc/refman/5.1/zh/stored-procedures.html#create-procedure
DELIMITER $$
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
SELECT * FROM document;
END;
$$ -- changed by ACMAIN
DELIMITER ;
Query OK, 0 rows affected (0.08 sec)mysql> DELIMITER $$
mysql> CREATE PROCEDURE `aa` ()
-> BEGIN
-> SELECT * FROM document;
-> END
-> $$
Query OK, 0 rows affected (0.06 sec)mysql> DELIMITER ;
mysql> call aa();
Empty set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql>
mysql> use wincodb;
database changed
mysql> DELIMITER $$
mysql> CREATE PROCEDURE `aa` ()
-> BEGIN
-> SELECT * FROM document;
-> END
-> $$
ERROR 1044(42000):Access defined for user 'root'@'%' to datebase 'wincodb'
mysql> select * from document;
-> $$
后面为正确的查询结果记录。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ;
mysql> use wincodb;
database changed
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ;
ERROR 1045 (28000):Access defined for user 'root'@'%'(using password:yes)
select * from user;看看。授权情况。
对表的任何操作都没有问题,已经试过了,但是建存储过程时就提示上边的问题,不知道为何?
mysql> use wincodb;
database changed
mysql> create table winsql (f int);
Query OK, 0 rows affected (0.09 sec)mysql> DELIMITER $$
mysql> CREATE PROCEDURE `aa` ()
-> BEGIN
-> SELECT * FROM winsql;
-> END
-> $$
ERROR 1044(42000):Access defined for user 'root'@'%' to datebase 'wincodb'
仍旧是这个错误!
select * from user;看一下权限设置了。
这是因为该存储过程的所有者/定义者(definer)不存在导致的,可能是由于管理员不小心给删除了等引起的,只需要重新创建对应账户,或者将该存储过程的定义者修改成一个已存在的账户,例如:root@localhost即可。 附:触发器也会有这个问题,5.1版本中的Event Scheduler应该也有,需要注意下。 ”用这个试了一下
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' ;
ERROR 1045 (28000):Access defined for user 'root'@'%'(using password:yes)
查找肯定是查得到信息。
我现在就是Mysql数据库管理员用户,通过ADMINMISTRATOR图形界面进行操作,就类似于MICROSOFR SQL SERVER 中的企业管理器一样,而user只是我建的一个表,和数据库的操作权限没有关系呀
管理员未必有某个数据库的权限。
你需要到 user , db 表中去看一下实际授权情况。
http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#privilege-system
mysql> use wincodb;
database changed
mysql> DELIMITER $$
mysql> CREATE PROCEDURE `aa` ()
-> BEGIN
-> SELECT * FROM document;
-> END
-> $$
现在可以了,但是我该怎么把它保存起来呢?
然后我在Administrator建存储过程
DELIMITER $$
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
SELECT * FROM document;
END
DELIMITER ;
执行保存时仍提示出错呀
DELIMITER $$
CREATE PROCEDURE `aa` ()
BEGIN
SELECT * FROM document;
END
$$
DELIMITER ;