我是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行。
我在这里帮助我,我错了。
答案 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] ");