thread_stack ces lako da povecas
a evo i probao sam nije mi bilo tesko
Code:
mysql> create table razred (id int ) engine=myisam;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> delimiter $
mysql> CREATE PROCEDURE `konverzija`()
-> BEGIN
-> DECLARE a INT;
-> DECLARE done INT DEFAULT 0;
-> DECLARE C CURSOR FOR SELECT id FROM razred where id = 40;
-> DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
->
-> OPEN C;
-> REPEAT
-> FETCH C INTO a;
->
-> select 1;
->
-> UNTIL done END REPEAT;
->
-> CLOSE C;
-> END;
-> $
Query OK, 0 rows affected (0.09 sec)
mysql> delimiter ;
mysql> call konverzija();
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> insert into razred values (40);
Query OK, 1 row affected (0.00 sec)
mysql> call konverzija();
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> insert into razred values (40), (10), (20), (40), (40);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> call konverzija();
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'thread_stack';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| thread_stack | 262144 |
+---------------+--------+
1 row in set (0.00 sec)
doduse ja imam default vrednost za thread stack koja je malo veca od te vrednosti koju ti imas ...
kada sam dodao thread_stack=131072 u my.cnf
Code:
mysql> show global variables like 'thread_stack';
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| thread_stack | 131072 |
+---------------+--------+
1 row in set (0.00 sec)
mysql> use test
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> call konverzija();
ERROR 1436 (HY000): Thread stack overrun: 8232 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack.
ne znam da li si sam smanjio thread stack ili je to uradio tvoj provajder (ako koristis shared hosting). ako si ti to uradio, valjda znas zasto - lako ces povecati, ako je provajder - oni to rade zato sto nemaju dovoljno resursa a imaju hiljade konekcija na bazu. tako da limitiraju sve sto mogu / koliko mogu. Kao sto vidis tu je thread stack smanjen na pola od onoga sto je po default-u