$ar = $this->modulesList();
- print_R($ar);exit;
+
foreach($ar as $m) {
continue;
}
- $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ;
+ $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ." 2>&1" ;
echo basename($dir).'/'. basename($fn) . '::' . $cmd. ($this->cli ? "\n" : "<BR>\n");
- passthru($cmd);
+
+ $fp = popen($cmd, "r");
+ while(!feof($fp))
+ {
+ // send the current file part to the browser
+ $line = trim(fgets($fp, 1024));
+ $matches = array();
+ if (!preg_match('/^ERROR\s+([0-9]+)/', $line, $matches)) {
+ echo "OK - {$line}\n"; flush();
+ continue;
+ }
+ $continue =0;
+ switch($matches[1]) {
+ case 1050: // create tables triggers this..
+ case 1060: // Duplicate column name
+
+ case 1054: // Unknown column -- triggered by CHANGE COLUMN - but may hide other errrors..
+ case 1061: // Duplicate key name - triggered by add index.. but could hide error. - unlikely though.
+ $continue = 1;
+ break;
+
+ }
+ if ($continue) {
+ echo "IGNORE - {$line}\n"; flush();
+ continue;
+ }
+ // real errors...
+ // 1051: // Unknown table -- normally drop = add iff exists..
+
+ print_r(array($line,$matches));exit;
+
+
+ }
+
}