Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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 PostgreSQL查询执行两次_Postgresql_Perl_Plpgsql - Fatal编程技术网

Perl PostgreSQL查询执行两次

Perl PostgreSQL查询执行两次,postgresql,perl,plpgsql,Postgresql,Perl,Plpgsql,我试图理解它为什么会发生,但我找不到它。SQL查询执行两次 我的剧本: my $driver = "Pg"; # Driver Name my $database = $ARGV[0]; # First argument will be database name my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432"; my $userid = $ARGV[1]; # second argument will be u

我试图理解它为什么会发生,但我找不到它。SQL查询执行两次

我的剧本:

my $driver = "Pg"; # Driver Name
my $database = $ARGV[0]; # First argument will be database name
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432";
my $userid = $ARGV[1]; # second argument will be username
my $password = $ARGV[2]; # third argument will be passwd
my $dbh = DBI->connect($dsn,$userid,$password,  {RaiseError => 1 }) or die $DBI::errstr;

sub f_createUser {
    if (scalar @_ != 3 ) {
        return;
    }
    my $query = $dbh->prepare(qq{ SELECT createUserWithPassword(?,?) });
    #my $result = $dbh->do($query) < 0 ? say "$DBI::errstr" : "# >>> Query worked successfully";
    $query->execute($_[1],$_[2]);
}

&f_createUser(@revelantArray);
my$driver=“Pg”#驱动程序名称
my$database=$ARGV[0];#第一个参数将是数据库名称
my$dsn=“DBI:$driver:dbname=$database;host=127.0.0.1;port=5432”;
我的$userid=$ARGV[1];#第二个参数是用户名
我的$password=$ARGV[2];#第三个参数将是passwd
my$dbh=DBI->connect($dsn,$userid,$password,{RaiseError=>1})或die$DBI::errstr;
子f_createUser{
如果(标量@!=3){
返回;
}
my$query=$dbh->prepare(qq{选择createUserWithPassword(?,)});
#我的$result=$dbh->do($query)<0?说“$DBI::errstr”:“#>>>查询成功”;
$query->execute($\uU1],$\uU2]);
}
&f_createUser(@revelantArray);
当我执行脚本时,我得到:

DBD::Pg::st执行失败:错误:角色“tesstt”已存在 上下文:SQL语句“使用密码“123”创建用户tesstt” PL/pgSQL函数createuserwithpassword(字符变化,字符 变化)homework2.pl第39行执行语句的第3行, 第1行。DBD::Pg::st执行失败:错误:角色“tesstt”已存在 存在上下文:SQL语句“使用密码创建用户” “123”PL/pgSQL函数createuserwithpassword(字符 变化,字符变化)homework2.pl中EXECUTE语句的第3行 第39行,第1行

为什么会这样?我错过了什么


提前感谢…

您有
PrintError=>1
,它会在出现错误时打印错误消息

您有
RaiseError=>1
,它抛出一个包含错误消息的异常。未捕获的异常在程序结束时打印


PrintError=>0
添加到传递给
DBI->connect

的选项中感谢您的关注,我是否有PrintError=>1?我在哪里有它?我应该在哪里添加PrintError=>0,您能再指定一点吗?这是
连接
的选项之一。这是默认值。allrigth但是我应该如何添加到PrintError=>0?我应该在哪里找到它?将它添加到
连接
的选项中。