【问题标题】:mysql query is not working in perlmysql查询在perl中不起作用
【发布时间】:2014-09-27 05:19:05
【问题描述】:

我是 perl 开发者的初学者。 我正在通过 perl 脚本连接 mysql。 但是当我尝试打一些查询时。 除了一个之外,所有查询都成功运行。 我在 mysql 控制台上使用该查询的地方它运行成功。

#!/usr/bin/perl -w

use DBI;

$dbh1 = DBI->connect('dbi:mysql:testing;host=localhost', 'root', '93C0o35A9/692fz') or die "Connection Error: $DBI::errstr\n";

$dbh1->do('stop slave');
$dbh1->do('CHANGE MASTER TO MASTER_HOST=54.254.154.33, MASTER_USER=replica, MASTER_PASSWORD=aims145, MASTER_LOG_FILE=mysql-bin99, MASTER_LOG_POS=107');
$dbh1->do('start slave');

第一个和第三个查询运行良好,而第二个显示如下语法错误

 ./newmysql.pl

DBD::mysql::db do failed: 你的 SQL 语法有错误;查看 与您的 MySQL 服务器版本相对应的手册 在 '54.183.14.179, MASTER_USER=replica, 附近使用的语法 MASTER_PASSWORD=aims145, MASTER_LOG_FILE=mys' 在第 1 行 ./newmysql.pl 第 8 行。

请在我错的地方帮助我。

【问题讨论】:

    标签: mysql linux perl


    【解决方案1】:

    documentation建议引用不同变量的值,试试:

    $dbh1->do("CHANGE MASTER TO MASTER_HOST='54.254.154.33', MASTER_USER='replica', MASTER_PASSWORD='aims145', MASTER_LOG_FILE='mysql-bin99', MASTER_LOG_POS=107");
    

    【讨论】:

    • 在包含多个单引号的字符串上使用单引号是不正当的!
    • 所以把外面的单引号换成双引号,就不用转义里面的单引号了。
    • @LenJaffe:是的,几乎任何事情都可以:"..."q{...}qq/.../ 但选择only特殊字符出现在字符串中是一个大错误
    • 我使用@LenJaffe 的建议来更新答案。
    • @EricBouwers:我希望那是讽刺?如果不是,那么请意识到你不对我负责。如果是这样,那么请记住,Stack Overflow 就是要创建众包答案。 SO 本身说,“我们的目标是为每个问题提供最佳答案,因此如果您看到可以改进的问题或答案,您可以对其进行编辑”。就像我在这里所做的那样,我倾向于制作 cmets,而不是修改解决方案;但如果我确定有问题,我最终会修改它。感谢您在这里的输入
    【解决方案2】:

    我不相信像这样的管理命令可以通过 DBI 工作(我目前无法测试它)我也不认为你应该这样做,但我认为问题可能在于命令的参数没有被正确引用。

    我建议你把命令改成这个。至少它会使它更具可读性

    $dbh1->do(<<'__END_SQL__');
    CHANGE MASTER TO
      MASTER_HOST     = '54.254.154.33',
      MASTER_USER     = 'replica',
      MASTER_PASSWORD = 'aims145',
      MASTER_LOG_FILE = 'mysql-bin99',
      MASTER_LOG_POS  = 107
    __END_SQL__
    

    【讨论】:

      【解决方案3】:
      $dbh1->do("CHANGE MASTER TO MASTER_HOST=\'54.183.14.179\', MASTER_USER=\'replica\', MASTER_PASSWORD=\'aims145\', MASTER_LOG_FILE=\'$mainip[0]\', MASTER_LOG_POS=$mainip[1] ");
      

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 2013-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 2017-01-24
        相关资源
        最近更新 更多