|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Igor Kuznetsov 2:5050/78 03 Aug 2001 21:32:55 To : All Subject : в день глюков пишу я к Вам или помогите разобраться в глюке с десятками --------------------------------------------------------------------------------
Good day to see you, All!
Имеем такой вот очень интересный скриптик, который взаимодействует с MySQL. в
этом MySQL есть база, в ней поле в котором есть строки 2.1 2.2 2.3 ... 2.9 2.10
2.11 ... 3.1 ... 3.9 3.10 3.11 и т.д.
Скрипт пишет в соседнее поле цифру зарегенного пользователя. т.е например в 2.1
появляются цифры 1,2,3,4 и т.д. где 1 2 3 - это пользователи. Так вот скрипт
сначала проверяет поле, если оно не пустое, то достает из него значение и
конкотинирует со следующим. Вот фрагмент, который это выполняет.
@spec=split /,/, $spec;
$regposition="_".$var{region};
$sth = ListFields $dbh grp;
for $no(0..$#spec)
{
$body=0; #
$regbody=0; #
$sth = $dbh->Query("SELECT smart FROM grp WHERE grp=@spec[$no]");
$body = $sth->FetchRow;
$sth = $dbh->Query("SELECT $regposition FROM grp WHERE grp=@spec[$no]");
$regbody = $sth->FetchRow;
print "<br> No: $no Spec: @spec[$no] Body: $body Regbody: $regbody Number:
$number \n"; # Для отладки
if ($body ne "")
{
$body=$body.",".$number;
}
else
{
$body=$number;
}
if ($regbody ne "")
{
$regbody=$regbody.",".$number;
}
else
{
$regbody=$number;
}
# print "Body: $body <br>\n";
# print "Regbody: $regbody <br>\n";
$sth = $dbh->Query("UPDATE grp SET smart='$body' WHERE grp='@spec[$no]'");
$sth = $dbh->Query("UPDATE grp SET $regposition='$regbody' WHERE
grp='@spec[$no]'");
print "<br> После No: $no Spec: @spec[$no] Body: $body Regbody: $regbody
Number: $number \n";
}
Hу и далее пишет в базу. Все вроде бы ok. Hо в строках с 2.10 3.10 3.20 т.е.
кратные десяти появляется очень даже интересный глюк. в общем вместо того, чтобы
записать 1,2 он пишет 1,2,2 (причем пишет это в базу на диск, т.е. в файле базы
там есть 1,2,2) Далее присходит совсем интересные вещи. Когда добавляет 3
пользователя, то получается 1,2,3,3 (хотя он должен был взять 1,2,2 и прибавить
к нему 3)
С последующим ситуация повторяется... в итоге на конце в полях со значением
кратным десяти в соседнем поле всегда на конце две повторяющиеся цифры. т.е.
1,2,3,4,4 или 1,2,3,4,5,5 и т.д...
Может это глюк MySQL ? Кто что-нибудь слышал вообще про такое? Как такое может
быть?
PS: Кстати, в фидо ведь почему-то запрещают делать номера узлов кратных десяти.
Почему???
With Best Regards! Igor
E-mail: virex[at]mail.ru 03 Aug 01 22:32
... Люблю, Обь, твою мyть...
--- GoldED+/W32 snapshot-2000.12.24
* Origin: Saba wo yomu (2:5050/78)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/121803b6af279.html, оценка из 5, голосов 10
|