【发布时间】:2016-05-06 02:09:18
【问题描述】:
表“geoPoint”被标记为崩溃,应该修复
我用一个有 500 行的文件调用这个函数 这会导致 500 个查询被快速连续调用...
这可能不是最有效的,但为什么它会不断地崩溃地理点表??
CSVImport($table, $fields,$_FILES["file"["tmp_name"],$cardID,2);
function CSVImport($table, $fields, $file,$cardID,$intype) {
if($file == null)
{
echo "Error No File";
die('Cannot open uploaded file.');
}
$handle = fopen($file,'r');
if(!$handle) die('Cannot open uploaded file.');
$tmpfname = tempnam("/tmp", "FOO");
copy($file, $tmpfname);
$row_count = 0;
$rows = array();
while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {
$row_count++;
$itemcount = 0;
$NAME = $data[0];
$LAT = $data[1];
echo "<td>{$LAT}</td>";
$LON = $data[2];
echo "<td>{$LON}</td>";
$STREETNUM = $data[3];
echo "<td>{$STREETNUM}</td>";
$STREETNAME = $data[4];
echo "<td>{$STREETNAME}</td>";
$CITY = $data[5];
echo "<td>{$CITY}</td>";
$ZIP = $data[6];
echo "<td>{$ZIP}</td>";
$COUNTY = $data[7];
echo "<td>{$COUNTY}</td>";
$UUID = $data[8];
echo "<td>{$GEOTYPE}</td>";
$DATE = $data[9];
echo "<td>{$DATE}</td>";
$GARCOMUUID = $data[10];
echo "<td>{$GARCOMUUID}</td>";
$CITYUUID = $data[11];
echo "<td>{$CITYUUID}</td>";
$CITYSPECUUID = $data[12];
$latRound = number_format((float)$LAT, 3, '.', '');
$lonRound = number_format((float)$LON, 3, '.', '');
number_format((float)$foo, 2, '.', '');
echo "<td>{$CITYSPECUUID}</td>";
$custquery="SELECT * FROM `geoPoint` WHERE `lat` LIKE '%{$latRound}%' AND `lon` LIKE '%{$lonRound}%' AND `street_num` = {$STREETNUM}";
$custre=mysql_query($custquery);
if (!$custre) { echo 'Could not run custre query: ' . mysql_error(); exit; }
$custarr = mysql_fetch_array($custre, MYSQL_ASSOC);
if($custarr == null)
$itemisnew = 0;
else
{
$itemisnew = mysql_num_rows(custarr);
}
if($itemisnew == 0)
echo "<td>NEW</td>";
else if($itemisnew == 1)
echo "<td>REPLACE</td>";
else
echo "<td>MULTIPLE!</td>";
}
fclose($handle);
【问题讨论】:
-
我总是可以通过phpmyadmin修复表
-
SELECT查询不会修改表,我认为它们不会造成损坏。你确定这是它发生的功能吗? -
是的 - 我运行它,然后崩溃...:/
-
可能其他脚本正在同时写入表,并且正在损坏表。
-
你检查过内存耗尽了吗?