| Bug #43227 | Ambiguous Error Message - Create Procedure over information_schema | ||
|---|---|---|---|
| Submitted: | 26 Feb 2009 13:54 | Modified: | 26 Feb 2009 14:27 | 
| Reporter: | Santo Leto | Email Updates: | |
| Status: | Duplicate | Impact on me: | |
| Category: | MySQL Server: Errors | Severity: | S3 (Non-critical) | 
| Version: | 5.1.31 | OS: | Windows (XP SP3) | 
| Assigned to: | CPU Architecture: | Any | |
| Tags: | messages, usability | ||
   [26 Feb 2009 14:27]
   MySQL Verification Team        
  Thank you for the bug report. Duplicate of bug: http://bugs.mysql.com/bug.php?id=24062
   [21 Dec 2009 8:08]
   Roel Van de Paar        
  Note that this may show in other (odd) ways:
mysql> CREATE PROCEDURE setuptables(IN numrows INT)
    -> BEGIN
    ->  DECLARE a INT;
    ->  SET a = 1;
    ->  DROP TABLE IF EXISTS a;
    ->  DROP TABLE IF EXISTS b;
    ->  CREATE TABLE `a` (`id` int,`p` varchar(20) KEY) ENGINE=MyISAM;
    ->  CREATE TABLE `b` (         `p` varchar(20) KEY) ENGINE=MyISAM;
    ->  WHILE (a < numrows) DO
    ->   INSERT INTO a VALUES (a,a);
    ->   INSERT INTO b VALUES (a);
    ->   SET a=a+1;
    ->  END WHILE;
    -> END;
    -> //
ERROR 1109 (42S02): Unknown table 'a' in information_schema
 

Description: When trying to create a stored procedure on information_schema, an ambiguous error message is returned by the server. How to repeat: Test Script: SELECT VERSION(), CURRENT_USER(), DATABASE(); DELIMITER $$ CREATE DEFINER = 'root'@'localhost' PROCEDURE `information_schema`.`test` () NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER BEGIN #do nothing END$$ DELIMITER ; Script Output: mysql> SELECT VERSION(), CURRENT_USER(), DATABASE(); +----------------------+----------------+--------------------+ | VERSION() | CURRENT_USER() | DATABASE() | +----------------------+----------------+--------------------+ | 5.1.31-community-log | root@localhost | information_schema | +----------------------+----------------+--------------------+ 1 row in set (0.00 sec) mysql> mysql> DELIMITER $$ mysql> CREATE -> DEFINER = 'root'@'localhost' -> PROCEDURE `information_schema`.`test` () -> NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER -> BEGIN -> #do nothing -> END$$ ERROR 1049 (42000): Unknown database 'information_schema' mysql> mysql> DELIMITER ; mysql> Suggested fix: For better usability, the error message would not be "Unknown database..." but "Can't create..." or "Access denied...". Database information_schema is known, only it is not possible to create objects in it.