[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: База данных отключается без сообщения
Владимир55
Задача довольно простая - закачать на сервер текстовой файл с данными вот в виде пяти колонок:
user posted image

А на сайте первую, вторую и четвертую колонки надо превратить в таблицу и закачать в базу.

Структура таблицы:

		$query = "CREATE TABLE registr_geo
(
id INT (11) NOT NULL AUTO_INCREMENT,
strana CHAR (10),
n INT (11),
PRIMARY KEY(id)
) COLLATE='utf8_general_ci'
ENGINE=InnoDB CHARACTER SET utf8"
;
mysql_query($query);
echo "<BR> Создана таблица registr_geo ";
echo mysql_errno()." 35 : ".mysql_error()."<BR>";

$query = "ALTER TABLE registr_geo ADD UNIQUE (strana)";
mysql_query($query);
echo mysql_errno()." 40 : ".mysql_error()."<BR>";



Запись делается вот таким кодом:

	// Заполним данными таблицу распределения IP адресов по территориям registr_terr
mysql_query("TRUNCATE TABLE `registr_terr`");

$buff = file_get_contents("geo_files.txt");

$buff = str_replace (chr(10), "<br />", $buff);
$buff = trim ($buff);

$m_gos = explode("<br />", $buff);

for ($i = 0; $i < count($m_gos); $i++)
{

unset($m_det);
$m_det = explode(chr(9), $m_gos[$i]);

echo "<br />$i 0 - ". $m_det[0] . " | 1 - " . $m_det[1] . " | 2 - " . $m_det[2] . " | 3 - " . $m_det[3] . " | 4 - " . $m_det[4];

mysql_query("INSERT INTO registr_terr (`min`, `max`, `strana`)
VALUES
('
$m_det[0]', '$m_det[1]', '$m_det[3]')");
echo mysql_errno()." 439 : ".mysql_error()."<BR>";
}


// Проверка полноты записи
unset($res);
unset($row);
$res = mysql_query("SELECT COUNT(id) AS cnt FROM registr_terr ");
$n_str = mysql_result($res, 0, 'cnt');


echo "<br />i $i = $n_str" ;


В конце сличается количество строк в исходной инфе и в созданной таблице.

И эти числа не совпадают!

В текстовом файле 219172 строк, а в таблице только 105374.

В процессе работы выводится сообщение "Duplicate entry '2147483647-2147483647' for key 'min'".

user posted image

Нюанс в том, что вот этого числа 2147483647, порождающего проблему, в текстовом файле с заносимой информацией вообще нет! Оно каким-то образом порождается именно сервером!

Для контроля я добавил вывод заносимой информации в браузер. И в браузере тоже нет этого числа 2147483647. Как же тогда сервер пишет его в базу?

(А при работе на Денвере все исполняется верно, и этого числа 2147483647 в базе нет).

Хостер молчит - видимо, сам не знает.

Вот ссылка на скрипт http://fh7929mi.bget.ru/baza-ip-2.php
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.