I am working on a script to parse a series of text files and insert or update this data as appropriate into a couple of database tables. I am stuck at a point with a couple of errors that are just confusing the hell out of me. I keep going around in circles and I must be missing something here. Please let me know if you can spot anything in this piece of code. This is a pair of subroutines from the script, and the place where the problems exist are in the fs_db_pop subroutine. Here is the code with line numbers, and then the output/error messages.
87 sub fs_db_pop { 88 $server = $name; 89 my $test2 = $dbh2->prepare("SELECT id FROM fsref WHERE server ='$serve r' AND fs_name = '$fs_name'"); 90 $test2->execute(); 91 92 $rows2 = $test2->rows(); 93 print "Number of matching rows: $rows2 \n"; 94 if ($rows2 == 1) { 95 my $vals = $test2->fetchrow_hashref ('NAME_lc'); 96 my $id = $vals->{id}; 97 my $query = $dbh2->prepare("SELECT * FROM fsdata WHERE id ='$id'"); 98 $query->execute(); 99 while (my $ref2 = $query->fetchrow_hashref ('NAME_lc')) { 100 undef $set2; 101 foreach my $key2 (keys %$ref2) { 102 unless ($$key2 eq $ref2->{$key2}) { 103 $set2 .= " , " if $set2; 104 $set2 .= $key2 . "=\'$$key2\'"; 105 } 106 $query->finish(); 107 } 108 if ($set2) { 109 print "Entry found in database. Updating information for $id. \ n"; 110 my $sql2 = "UPDATE fsdata SET $set2 WHERE id = '$id'"; 111 my $sth2 = $dbh2->prepare(qq{$sql2}); 112 $sth2->execute(); 113 $sth2->finish(); 114 } 115 } 116 } else { 117 undef $id; 118 $dbh2->do("INSERT INTO fsref VALUES('$id','$server','$fs_name')") or p rint "Error updating fsref table: ", $dbh2->errstr, "\n"; 119 $id = $dbh2->{mysql_insertid}; 120 $dbh2->do("INSERT INTO fsdata VALUES('$id','$lvol','$stripe_num','$str ipe_size','$size','$owner','$group','$export')") or print "Error updating fsdata table: ", $dbh2->errstr, "\n"; 121 print "Entry not found in database. Adding information for $id. \n"; 122 } 123 $test2->finish(); 124 } 125 126 sub filesystems { 127 # $fs_index = (split /\[|\]/)[1]; 128 @fs_data = split(/:\s+/); 129 chomp($fs_data[1]); 130 # print "Test: $fs_data[0] \n"; 131 if ($fs_data[0] =~ /^Filesystem/) { 132 $fs_name = $fs_data[1]; 133 } elsif ($fs_data[0] =~ /^Owner/) { 134 ($owner, $group) = split /\s+/, $fs_data[1], 2; 135 } elsif ($fs_data[0] =~ /^LvolN/) { 136 $lvol = $fs_data[1]; 137 } elsif ($fs_data[0] =~ /^Exported/) { 138 $export = $fs_data[1]; 139 } elsif ($fs_data[0] =~ /^LvolS\[/) { 140 $size = $fs_data[1]; 141 } elsif ($fs_data[0] =~ /^LvolStN/) { 142 $stripe_num = $fs_data[1]; 143 print "$stripe_num \n"; 144 } elsif ($fs_data[0] =~ /^LvolStS/) { 145 $stripe_size = $fs_data[1]; 146 fs_db_pop(); 147 undef @fs_data; 148 } 149 } I mainly include the second subroutine because that is where the parsing of the data from the text file occurs. It is working fine, but I thought it might be helpful to see it also. The rest of the script mainly sets up the database connection strings, and handles adding/updating a seperate database table with other information. Here is the output of the script: Number of matching rows: 1 Entry found in database. Updating information for 116. DBD::mysql::st execute failed: You have an error in your SQL syntax near 'group= 'sys ' , lvol='/dev/vg02/lvol2 ' , stripe_num='4 ' , id='377140311' , size' at l ine 1 at ./sys_db_update-dev.pl line 112, <INV> line 1145. DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at ./sys_db_up date-dev.pl line 99, <INV> line 1145. 0 Number of matching rows: 1 Entry found in database. Updating information for 117. DBD::mysql::st execute failed: You have an error in your SQL syntax near 'group= 'root ' , lvol='/dev/vg00/home_tmp ' , stripe_num='0 ' , id='377140311' , ' at l ine 1 at ./sys_db_update-dev.pl line 112, <INV> line 1153. DBD::mysql::st fetchrow_hashref failed: fetch() without execute() at ./sys_db_up date-dev.pl line 99, <INV> line 1153. pyro found in database. Updating information for pyro. Hopefully this is enough information for someone to help figure out what I am doing wrong here. Thanks in advance for the help. Scott Nipp Phone: (214) 858-1289 E-mail: [EMAIL PROTECTED] Web: http:\\ldsa.sbcld.sbc.com