Antetodo .. felicitarte por la forma de hacer la pregunta .. clara . concisa y con todos los códigos y datos q usas publicados en una web para q sean visibles en su contexto.
Sobre el problema que tienes .. Es que Mysql NO ejecuta varias consultas en un mismo mysql_query().
Una consulta la define cada: instrucciones SQL
;
Por lo tanto hay q identificar cada ; para repartir varias consultas como las q tienes en tu db.sql en varios mysql_query() ...
Como sabemos que caracter es el "delimitador" se pude facilmente aplicar un simple explode() y obtener un array con el que poder trabajar para enviar las consultas mysql_query() una por una.
Aquí .. gracias a tus ejemplos hice una versión que "casi funciona por completo" ... Por lo mismo que comento sobre el ";" (punto y coma) como delimitador .. en tus datos hay un ; q no se ha de indentificar como delimitador de consulta SQL .. Eso ya te lo dejo a ti xD una vez detectado el problema.
Código PHP:
<?php
$pre = "test";
$user="test";
$pass="test";
$mail="test";
$archivo = "db.sql";
$fd = fopen($archivo,"r");
$sql = fread ($fd, filesize ($archivo));
fclose($fd);
$sql=str_replace("newspostsys_smiles",$pre."log",$sql);
mysql_connect("localhost","","") or die (mysql_error()) ;
mysql_select_db("prueba") or die (mysql_error()) ;
$consultas = explode( ';', $sql); // el ; define el fin de una instruccion SQL ..
// Obtenido el array de Instrucciones SQL q hay q ejecutar ..
// se procede a recorrer el array ejecutando una a una cada consulta.
foreach( $consultas as $sql_temporal ){
echo 'Consulta:<br>'.$sql_temporal.'<br>';
$consulta = mysql_query( $sql_temporal ) or die('Error: '.mysql_error());
echo '... OK ...<br><br>';
}
?>
Un saludo,