- 论坛徽章:
- 0
|
代码和错误
#!/usr/bin/perl
#write_data.pl
use warnings;
use strict;
use DBI;
our @clk_name = (); # the name of the variables below are defferent from ISSAC block
our @clk_width = ();
our @clk_reset_value = ();
our @clk_description = ();
#@clk_name =("clk","clk5");
@clk_name =("clk5","clk7","clk8");
@clk_width=("1","1","1");
@clk_reset_value=("0","0","0");
@clk_description=("input","input","input");
&write_data;
sub write_data {
my ($dbh,$sth,$sql,$sql2,$sql3,$i);
# create a statement in $sth
$dbh=DBI->connect('dbi:mysql:mydatabase','root','123456',{PrintError=>0,RaiseError=>1});
#prepare the statement
$i=0;
$sql="insert into node_tag_clock_input (signal_name,signal_width,signal_reset_value,signal_description) values('$clk_name[$i]','$clk_width[$i]','$clk_reset_value[$i]','$clk_description[$i]')";
$sql2="select signal_name from node_tag_clock_input";
$sql3="update node_tag_clock_input set signal_width = '$clk_width[$i]',signal_reset_value='$clk_reset_value[$i]',signal_description='$clk_description[$i]' where signal_name='$clk_name[$i]'";
for ($i=0;$i<=(@clk_name-1);$i++) {
$sth=$dbh->prepare($sql2);
#execute the statement
$sth->execute or die $dbh->errstr;
print $clk_name[$i],$clk_width[$i],$clk_reset_value[$i],$clk_description[$i],$i;
print "a\n";
my $clk_name_2;
while (my ($clk_name_1)=$sth->fetchrow_array){
$clk_name_2=$clk_name_2 . $clk_name_1;
#print "**" . $clk_name_2 ."**\n";
}
#print "aa\n";
if ($clk_name_2 =~ m/$clk_name[$i]/) {
#print "aaa\n";
$dbh->do($sql3);
} else {
# print "aaaa\n";
$dbh->do($sql);
}
}
#while (my ($clk_name_1,$clk_width_1)=$sth->fetchrow_array) {
# printf("\$clk_name=%s,\$clk_width=%d\n",$clk_name_1,$clk_width_1);
#}
#
$sth->finish;
$dbh->disconnect;
}
问题:DBD::mysql::db do failed:duplicate entry 'clk5' for key 1 at e:\perl_dbi_test_code\write_data.pl line 50. |
|