Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl MariaDB复制有时不起作用_Perl_Mariadb - Fatal编程技术网

Perl MariaDB复制有时不起作用

Perl MariaDB复制有时不起作用,perl,mariadb,Perl,Mariadb,我在Mysql复制(主/从)方面遇到了一个我以前从未见过的问题: 当我在PHP脚本上执行mysql控制台查询(如“INSERT-INTO”)时,它工作得非常好。它们在mysql从机上得到了完美的复制。 但是:如果我使用PerlDBI在Perl脚本上执行相同的操作,则不会。然后它只存储在Mysql主服务器上。在从属服务器上的mysql.log文件中,没有任何内容到达。自从我在两台服务器上从Mysql迁移到MariaDB后,我就遇到了这个问题。 Perl DBI客户机是否绝对应该做一些复制工作 我使

我在Mysql复制(主/从)方面遇到了一个我以前从未见过的问题: 当我在PHP脚本上执行mysql控制台查询(如“INSERT-INTO”)时,它工作得非常好。它们在mysql从机上得到了完美的复制。 但是:如果我使用PerlDBI在Perl脚本上执行相同的操作,则不会。然后它只存储在Mysql主服务器上。在从属服务器上的mysql.log文件中,没有任何内容到达。自从我在两台服务器上从Mysql迁移到MariaDB后,我就遇到了这个问题。 Perl DBI客户机是否绝对应该做一些复制工作

我使用以下简单代码插入数据:

#!/usr/bin/perl
use DBI;
$dsn = 'dbi:mysql:database=mysql;host=myhostname';
$dbh = DBI->connect($dsn, 'mouser', 'password',
            { RaiseError => 1, AutoCommit => 0 }) || exit(1);
...
$sth = $dbh->prepare("INSERT INTO mydatabase.mytable (user, domain) VALUES('$account_name', '$domain')");
$sth->execute();
$dbh->commit();
是否有可能因为DBI应该使用mariadb驱动程序而不进行复制?比如$dsn='dbi:mariadb:database=mysql;host=myhostname';如果存在的话


需要明确的是:切换到MariaDB后,使用PHP脚本插入的数据仍在复制中,但使用Perl脚本插入的数据却没有复制。我找到了使用此简单Perl脚本复制失败的原因: 有人写道:

$dsn = 'dbi:mysql:database=mysql;host=myhostname';
...
$sth = $dbh->prepare("INSERT INTO mydatabase.mytable (user, domain) VALUES('$account_name', '$domain')");

这不起作用,因为DBI连接到数据库“mysql”而不是“mydatabase”(请参阅“database=mysql”)。即使INSERT INTO将行直接插入数据库“mydatabase”中,MariaDB主服务器也会忽略该行进行复制。奇怪的是,它与MySQL完美配合,而不是MariaDB(版本5.5.46)。也许这是MariaDB中的一个bug,我不知道。

只是想澄清一下:在切换到MariaDB后,用PHP脚本插入的数据仍在被复制,但用Perl脚本插入的数据不是吗?MariaDB与MySQL是二进制兼容的,所以DBD::MySQL驱动程序工作得很好。
MySQL.log
与复制无关。被复制的内容进入主机上的“binlog”;从那里它被传输到从机上的“中继日志”。Do
显示从机状态在Perl的每个步骤中添加错误检查。