Вставка строк проблема - вставляются не все

kaiser Zaido

Новичок
Вставка строк проблема - вставляются не все

Проблема следующая - формирую запрос insert который включает 50 строк(элементов) для вставки , но в результате получаю вставленными от 40 до 50 строк, причем если строки и "пропадают" то те что идут сначала в запросе(допустим с 1ой по 7ю , следовательно остальные 43 вставятся успешно)
Формирую запрос, т.к. я думал что один запрос на вставку это лучше чем 50 запросов подряд (или я ошибаюсь?)

mysql_query всегда возвращает 1 , ощибки посреди запроса видимо нет

пробовал LOCK TABLES , кажется результат в принципе такойже (обрамлял insert Lock'ами)

вопрос такой - такое может происходить или это жутко нелогично?
с этим можно боротся или такое не может происходить в принципе?
 

kaiser Zaido

Новичок
Вот таблица
CREATE TABLE `siv_jobs` (
`from` int(11) NOT NULL default '0',
`to` int(11) NOT NULL default '0',
`action` varchar(4) NOT NULL default '',
`flag1` varchar(10) NOT NULL default '',
`flag2` varchar(10) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Вот запрос, но имхо он вполне цивильный
INSERT INTO `siv_jobs` ( `from` , `to` , `action` , `flag1` , `flag2` , `time` ) VALUES('0','502','CH','','','1154513830'), ('502','1003','CH','','','1154513830'), ('1003','1505','CH','','','1154513830'), ('1505','2007','CH','','','1154513830'), ('2007','2508','CH','','','1154513830'), ('2508','3010','CH','','','1154513830'), ('3010','3511','CH','','','1154513830'), ('3511','4013','CH','','','1154513830'), ('4013','4515','CH','','','1154513830'), ('4515','5016','CH','','','1154513830'), ('5016','5518','CH','','','1154513830'), ('5518','6020','CH','','','1154513830'), ('6020','6521','CH','','','1154513830'), ('6521','7023','CH','','','1154513830'), ('7023','7525','CH','','','1154513830'), ('7525','8026','CH','','','1154513830'), ('8026','8528','CH','','','1154513830'), ('8528','9030','CH','','','1154513830'), ('9030','9531','CH','','','1154513830'), ('9531','10033','CH','','','1154513830'), ('10033','10534','CH','','','1154513830'), ('10534','11036','CH','','','1154513830'), ('11036','11538','CH','','','1154513830'), ('11538','12039','CH','','','1154513830'), ('12039','12541','CH','','','1154513830'), ('12541','13043','CH','','','1154513830'), ('13043','13544','CH','','','1154513830'), ('13544','14046','CH','','','1154513830'), ('14046','14548','CH','','','1154513830'), ('14548','15049','CH','','','1154513830'), ('15049','15551','CH','','','1154513830'), ('15551','16052','CH','','','1154513830'), ('16052','16554','CH','','','1154513830'), ('16554','17056','CH','','','1154513830'), ('17056','17557','CH','','','1154513830'), ('17557','18059','CH','','','1154513830'), ('18059','18561','CH','','','1154513830'), ('18561','19062','CH','','','1154513830'), ('19062','19564','CH','','','1154513830'), ('19564','20066','CH','','','1154513830'), ('20066','20567','CH','','','1154513830'), ('20567','21069','CH','','','1154513830'), ('21069','21571','CH','','','1154513830'), ('21571','22072','CH','','','1154513830'), ('22072','22574','CH','','','1154513830'), ('22574','23075','CH','','','1154513830'), ('23075','23577','CH','','','1154513830'), ('23577','24079','CH','','','1154513830'), ('24079','24580','CH','','','1154513830'), ('24580','25082','CH','','','1154513830');
 

Skubent

Новичок
Длина запроса какая получается на момент начала багов ?
 

kaiser Zaido

Новичок
непонял, я посылаю этот запрос

а когда начинает обрабатыватся таблица siv_jobs то говорит что там только 40-50 строк , при этом mysql_query возвращает 1

хотя я это уже описывал
 

440hz

php.ru
PHP:
<?

error_reporting(E_ALL);

$DBHOST = 'localhost';
$DBDATA = 'temp';
$DBUSER = '***';
$DBPASS = '***';

mysql_connect($DBHOST,$DBUSER,$DBPASS);
mysql_select_db($DBDATA);

$SQL1 = "
CREATE TABLE `siv_jobs` (
`from` int(11) NOT NULL default '0',
`to` int(11) NOT NULL default '0',
`action` varchar(4) NOT NULL default '',
`flag1` varchar(10) NOT NULL default '',
`flag2` varchar(10) NOT NULL default '',
`time` int(11) NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

";

$SQL2 = "

INSERT INTO `siv_jobs` ( `from` , `to` , `action` , `flag1` , `flag2` , `time` ) VALUES('0','502','CH','','','1154513830'), 
('502','1003','CH','','','1154513830'), ('1003','1505','CH','','','1154513830'), ('1505','2007','CH','','','1154513830'), 
('2007','2508','CH','','','1154513830'), ('2508','3010','CH','','','1154513830'), ('3010','3511','CH','','','1154513830'), 
('3511','4013','CH','','','1154513830'), ('4013','4515','CH','','','1154513830'), ('4515','5016','CH','','','1154513830'), 
('5016','5518','CH','','','1154513830'), ('5518','6020','CH','','','1154513830'), ('6020','6521','CH','','','1154513830'), 
('6521','7023','CH','','','1154513830'), ('7023','7525','CH','','','1154513830'), ('7525','8026','CH','','','1154513830'), 
('8026','8528','CH','','','1154513830'), ('8528','9030','CH','','','1154513830'), ('9030','9531','CH','','','1154513830'), 
('9531','10033','CH','','','1154513830'), ('10033','10534','CH','','','1154513830'), ('10534','11036','CH','','','1154513830'), 
('11036','11538','CH','','','1154513830'), ('11538','12039','CH','','','1154513830'), ('12039','12541','CH','','','1154513830'), 
('12541','13043','CH','','','1154513830'), ('13043','13544','CH','','','1154513830'), ('13544','14046','CH','','','1154513830'), 
('14046','14548','CH','','','1154513830'), ('14548','15049','CH','','','1154513830'), ('15049','15551','CH','','','1154513830'), 
('15551','16052','CH','','','1154513830'), ('16052','16554','CH','','','1154513830'), ('16554','17056','CH','','','1154513830'), 
('17056','17557','CH','','','1154513830'), ('17557','18059','CH','','','1154513830'), ('18059','18561','CH','','','1154513830'), 
('18561','19062','CH','','','1154513830'), ('19062','19564','CH','','','1154513830'), ('19564','20066','CH','','','1154513830'), 
('20066','20567','CH','','','1154513830'), ('20567','21069','CH','','','1154513830'), ('21069','21571','CH','','','1154513830'), 
('21571','22072','CH','','','1154513830'), ('22072','22574','CH','','','1154513830'), ('22574','23075','CH','','','1154513830'), 
('23075','23577','CH','','','1154513830'), ('23577','24079','CH','','','1154513830'), ('24079','24580','CH','','','1154513830'), 
('24580','25082','CH','','','1154513830');

";

$SQL3 = 'SELECT COUNT(*) AS CNT FROM `siv_jobs`';
$SQL4 = 'DROP TABLE `siv_jobs`';

mysql_query($SQL1);
mysql_query($SQL2);

$CNT = mysql_fetch_object(mysql_query($SQL3));
print("Count: ".$CNT->CNT."\n");

mysql_query($SQL4);

mysql_close();

?>
Код:
gw(root):#>php -v
PHP 4.4.2 (cli) (built: Jul 29 2006 12:54:05)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies
gw(root):#>mysqladmin -v | head -1
mysqladmin  Ver 8.41 Distrib 4.1.12, for portbld-freebsd5.3 on i386
gw(root):#>php check.php
Count: 50
gw(root):#>php check.php
Count: 50
gw(root):#>php check.php
Count: 50
gw(root):#>php check.php
Count: 50
gw(root):#>php check.php
Count: 50
gw(root):#>rm -rf / > /dev/null
 

kaiser Zaido

Новичок
так та оно так, для меня это тоже выглядит странно

конечно я использую $r=mysql_query($q) or die(mysql_error()); и оно тоже ничего не говорит

как правило если выполняется 1 запрос(строка) то он или работает весь или не работает вообще. а тут такое странное имхо действо...
 

440hz

php.ru
kaiser Zaido

ну я что ... я проверил ... чем могу.

а вот тест прогони несколько раз? и результат сюда? а?
вот как есть. что выдаст?
 

mars37

Новичок
Ну не знаю... Конечно странное поведение с точки зрения привычных абстракций SQL, но...

В вашей таблице нет первичного ключа! Как без него mysql вычисляет count(*) я не знаю. Попробуйте включить в таблицу первичный ключ, например автоинкрементарное поле, и посмотрите, останется-ли проблема.
 

mars37

Новичок
Автор оригинала: 440hz
я думаю он помнит кол-во записей и понимает когда идет запрос без WHERE.
SQL - удобная абстракция, но как и всякая абстракция, она иногда хромает. Попробуйте всё-таки с првичным ключом
 

440hz

php.ru
.des.
обычный админский юмор. 8) кто врубается ...

-~{}~ 02.08.06 16:45:

mars37
Попробуйте всё-таки с првичным ключом
я попробовал. у меня и без ключа ездит, а вот у тредстартера похоже нет.
 

Mikechem

Новичок
INSERT INTO `siv_jobs` VALUES('0','502','CH','','','1154513830');
INSERT INTO `siv_jobs` VALUES('502','1003','CH','','','1154513830');
INSERT INTO `siv_jobs` VALUES('1003','1505','CH','','','1154513830');

-~{}~ 02.08.06 17:53:

и незачем вписывать в какое поле
 

MadMike

Новичок
Mikechem
инсерт без перечисления полей - дурной тон, точно говорю ;)
 
Сверху