数据库建库脚本,需要做成数据库名、用户名可配置的形式。创建数据库、创建和授权用户均正常,但是use datebase失败。示例:
 -- 配置处
 SET @db_name:='copdb';
 
 -- 创建数据库、使用数据库代码处
 ......
 SET @use_db_sql  :=  CONCAT('USE ', @db_name, ';');
 PREPARE use_db_stmt FROM @use_db_sql;
 EXECUTE use_db_stmt;
 ......
请各位大神指点如何执行'use database_name'类型的字符串SQL。

解决方案 »

  1.   

    mysql 报错内容为:
      [SQL] 
        PREPARE use_db_stmt FROM @use_db_sql;
      [Err] 1295 - This command is not supported in the prepared statement protocol yet
      

  2.   

    用啥user dbname啊  直接dbname.tbname多好
      

  3.   

    这是一个刷库脚本,后续要进行建表语句刷库,所以没法用dbname.tbname呀。
      

  4.   

    仅以下语句可以用在PREPARE中。ALTER TABLE
    ANALYZE TABLE
    CACHE INDEX
    CALL
    CHANGE MASTER
    CHECKSUM {TABLE | TABLES}
    COMMIT
    {CREATE | DROP} DATABASE
    {CREATE | RENAME | DROP} USER
    CREATE INDEX
    CREATE TABLE
    DELETE
    DO
    DROP INDEX
    DROP TABLE
    FLUSH {TABLE | TABLES | TABLES WITH READ LOCK | HOSTS | PRIVILEGES
      | LOGS | STATUS | MASTER | SLAVE | DES_KEY_FILE | USER_RESOURCES}
    GRANT
    INSERT
    INSTALL PLUGIN
    KILL
    LOAD INDEX INTO CACHE
    OPTIMIZE TABLE
    RENAME TABLE
    REPAIR TABLE
    REPLACE
    RESET {MASTER | SLAVE | QUERY CACHE}
    REVOKE
    SELECT
    SET
    SHOW BINLOG EVENTS
    SHOW CREATE {PROCEDURE | FUNCTION | EVENT | TABLE | VIEW}
    SHOW {AUTHORS | CONTRIBUTORS | WARNINGS | ERRORS}
    SHOW {MASTER | BINARY} LOGS
    SHOW {MASTER | SLAVE} STATUS
    SLAVE {START | STOP}
    UNINSTALL PLUGIN
    UPDATE