【问题标题】:Question about SQL syntax关于SQL语法的问题
【发布时间】:2011-03-17 20:42:20
【问题描述】:

任何人这有什么问题吗?为什么会输出语法错误?

欢迎使用 MySQL 监视器。 命令以 ; 结尾或\g。你的 MySQL 连接 ID 为 169 服务器版本: 5.0.51a-3ubuntu5.7 (Ubuntu)

键入“帮助;”或 '\h' 寻求帮助。类型 '\c' 清除缓冲区。

mysql> 将所有权限授予 . TO '根'@'本地主机' ->;查询正常,0 行受影响(0.14 秒)

mysql> 由 'm' WITH GRANT 识别 选项;错误 1064 (42000):你有 SQL 语法错误;检查 对应于您的 MySQL 的手册 正确语法的服务器版本 在 'IDENTIFIED BY 'new_password' WITH GRANT 附近使用 选项'在第 1 行 mysql>

问候

贾维

【问题讨论】:

  • 看起来一个逻辑行已经分布在两个输入行上;您是否遵循为方便起见分行的指南?

标签: mysql


【解决方案1】:

它不是分成两行以便 MySQL 客户端将其理解为两个查询而不是一个吗?

尝试将查询作为一行执行:

GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' IDENTIFIED BY 'm' WITH GRANT OPTION;

【讨论】:

    【解决方案2】:

    你已经把一个语句分成了两个位。

    【讨论】:

      【解决方案3】:

      这里最后多了一个分号:

      GRANT ALL PRIVILEGES ON . TO 'root'@'localhost' ;
      

      你可以将一个 MySQL 查询拆分成几行,这样写是没有问题的:

       GRANT ALL PRIVILEGES ON . TO 'root'@'localhost'
       IDENTIFIED BY 'm' WITH GRANT OPTION;
      

      但是一旦 MySQL 看到分号(结束查询语句),它将执行缓冲区中的任何内容,在您的情况下,这是一个完整、有效的查询(授予 root 用户所有权限);但随后第二行变成了一个新查询:

         IDENTIFIED BY 'm' WITH GRANT OPTION;
      

      它本身是无效的。

      【讨论】:

        【解决方案4】:

        您已经使用了 mysql 命令行工具。分号结束您的 sql 命令,如 \g 或 \G。

        如果您不喜欢或不知道如何使用此命令行工具,您应该选择其他工具: http://dev.mysql.com/downloads/gui-tools/5.0.html -> mysql 管理员

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-15
          相关资源
          最近更新 更多