Bug #22766 stored procedure returning insert_id crash
| Submitted: | 28 Sep 2006 1:19 | Modified: | 28 Oct 2006 11:41 |
|---|---|---|---|
| Reporter: | Mike Willbanks | Email Updates: | |
| Status: | No Feedback | Impact on me: | |
| Category: | MySQL Server: Stored Routines | Severity: | S2 (Serious) |
| Version: | 5.0.24a | OS: | Linux (Linux Red Hat EL4) |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | Stored Procedure returning LAST_INSERT_ID crashes db. | ||
[28 Sep 2006 1:24]
Mike Willbanks
moved to proper category.
[28 Sep 2006 11:41]
Valeriy Kravchuk
Thank you for a problem report. Sorry, but I was not able to repeat the behaviour described with 5.0.26-BK on Linux AND(!) MySQL commend line client:
openxs@suse:~/dbs/5.0> wc -l 22766.sql
6642 22766.sql
openxs@suse:~/dbs/5.0> tail 22766.sql
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
CALL prodOptInsert('Just some text to insert', 32, 1);
openxs@suse:~/dbs/5.0> bin/mysql -uroot test < 22766.sql
...
id
6642
So, mysqli and/or prepared statements it may use by default may be a real problem here. Can you, please, try to provide a test case that shows the crash and is based on C API directly?
[28 Oct 2006 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[9 Dec 2006 5:36]
Greg Kopp
I have also experienced this bug, although it may be a bug in the PHP mysqli extension and not in MySQL itself.
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.054 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: When running a mass amount of information in to the database and using a stored procedure and returning the insert id there becomes a failure with the error code: 2013 - Lost connection to MySQL server during query. I was able to reproduce this on both RedHat EL4 and Fedora Core 4. How to repeat: CREATE THE PROCEDURE: ==================== CREATE PROCEDURE `prodOptInsert`(IN i_name VARCHAR(32), IN i_length INT, IN i_type INT) BEGIN INSERT INTO `zen_products_options` (`products_options_name`, `products_options_type`, `products_options_length`) VALUES (i_name, i_type, i_length); SELECT LAST_INSERT_ID() id; END CREATE THE TABLE: ================= CREATE TABLE `zen_products_options` ( `products_options_id` int(11) unsigned NOT NULL auto_increment, `language_id` int(11) NOT NULL default '1', `products_options_name` varchar(32) NOT NULL default '', `products_options_sort_order` int(11) NOT NULL default '0', `products_options_type` int(5) NOT NULL default '0', `products_options_length` smallint(2) NOT NULL default '32', `products_options_comment` varchar(64) default NULL, `products_options_size` smallint(2) NOT NULL default '32', `products_options_images_per_row` int(2) default '5', `products_options_images_style` int(1) default '0', `products_options_rows` smallint(2) NOT NULL default '1', PRIMARY KEY (`products_options_id`,`language_id`), KEY `idx_lang_id_zen` (`language_id`), KEY `idx_products_options_sort_order_zen` (`products_options_sort_order`), KEY `idx_products_options_name_zen` (`products_options_name`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CALL THE PROCEDURE: =================== Run this procedure in a loop for 6000 iterations (it typically fails way before this number). CALL prodOptInsert('Just some text to insert', 32, 1); TEXT PHP SCRIPT (PHP 5.1.6 mysqli extension): ============================= <?php $db_remote = new mysqli('localhost', 'username', 'password', 'database'); for($c=0;$c<6000;$c++) { $opt_id = $db_remote->query(sprintf("CALL prodOptInsert('%s','%s',1)", mysqli_real_escape_string($db_remote, 'Just some text to insert'), mysqli_real_escape_string($db_remote, 32) )); if (!$db_remote->ping()) { print 'Options Insert'."\n"; printf("Connection dropped: %s\n", $db_remote->error); printf("Errorcode: %d\n", $db_remote->errno); exit(); } $opt_id = $opt_id->fetch_assoc(); $opt_id = $opt_id['id']; } $db_remote = null; ?>