MySQL Administrator是MySQL管理的图形界面,我用这个建存储程式,不知道怎么建不了,建一个最简单的语句也还是不行,执行后提示出错。程式如下:
DELIMITER $$
CREATE PROCEDURE `wincodb`.`aa` ()
BEGIN
  SELECT * FROM document;
END
DELIMITER ;
WINCODB是数据库,document是数据表,aa是存储程式名

解决方案 »

  1.   

    DELIMITER $$
    CREATE PROCEDURE `wincodb`.`aa` ()
    BEGIN
      SELECT * FROM document;
    END$$
    DELIMITER ; 
      

  2.   

    你没有提交啊 :-) 可以参考一下MySQL官方文档中的例子。
    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 ; 
      

  3.   

    同样的代码测试如上OK。贴一下你的执行结果。mysql> create table document (f int);
    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> 
      

  4.   

    执行
    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;
        -> $$
    后面为正确的查询结果记录。
      

  5.   

    ERROR 1044(42000):Access defined for user 'root'@'%' to datebase 'wincodb'没有权限的问题。
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ; 
      

  6.   

    执行 
    mysql> use wincodb; 
    database changed 
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' ; 
    ERROR 1045 (28000):Access defined for user 'root'@'%'(using password:yes)
      

  7.   

    use mysql;可以吗?好象你的root权限不足。有谁动过user 表吗?use mysql;
    select * from user;看看。授权情况。 
      

  8.   

    mysql就建在我的电脑里面,我用的是5.0.41版本,安装mysql的时候用户名统一为ROOT,然后密码设置的也对呀。而且我用的是Administrator图形界面,开始登录的时候就需要进行登录验证,也能登录连接上。
    对表的任何操作都没有问题,已经试过了,但是建存储过程时就提示上边的问题,不知道为何?
      

  9.   

    那你直接按四楼的全部代码来新建一表,试试。目前MySQL系统认为账号 root@% 在数据库 wincodb; 没有必要的权限。 
      

  10.   

    执行 
    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' 
    仍旧是这个错误!
      

  11.   

    use mysql;
    select * from user;看一下权限设置了。 
      

  12.   

    你安装一个SQLYOG,检查一下权限
      

  13.   

    查了一下资料说:“调用存储过程时,碰到错误,大致信息如下:error 1449 “There is no ‘username’@'host’ registered”
    这是因为该存储过程的所有者/定义者(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) 
      

  14.   

    有一个数据表名就是user,保存的是用户信息。
    查找肯定是查得到信息。
    我现在就是Mysql数据库管理员用户,通过ADMINMISTRATOR图形界面进行操作,就类似于MICROSOFR SQL SERVER 中的企业管理器一样,而user只是我建的一个表,和数据库的操作权限没有关系呀
      

  15.   


    管理员未必有某个数据库的权限。
    你需要到 user , db 表中去看一下实际授权情况。 
      

  16.   

    安装MYSQL时候,设置的用户名字就是ROOT
      

  17.   

    root 未必有所有database的所有权限. 你可以取消root对某些表的权限。5.7. MySQL访问权限系统
    http://dev.mysql.com/doc/refman/5.1/zh/database-administration.html#privilege-system 
      

  18.   

    修改权限后
    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 ; 
    执行保存时仍提示出错呀
      

  19.   

    在命令行中输入:
    DELIMITER $$
    CREATE PROCEDURE `aa` ()
    BEGIN
      SELECT * FROM document;
    END
    $$
    DELIMITER ;