mysql查询在perl中不起作用

时间:2014-08-04 16:50:21

标签: mysql linux perl

我是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失败:您的SQL语法出错;校验   与您的MySQL服务器版本对应的手册   在'54 .183.14.179,MASTER_USER = replica附近使用的语法,   MASTER_PASSWORD = targets145,MASTER_LOG_FILE = mys'在第1行   ./newmysql.pl第8行。

enter image description here 我在这里帮助我,我错了。

3 个答案:

答案 0 :(得分: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");

答案 1 :(得分:0)

我不相信像这样的行政命令可以通过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__

答案 2 :(得分:0)

$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] ");