|
|
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Привет всем!!! Помогите написать на MySQL 5.0 SP и потестировать на php 5. И кто может и кому не лень, подскажите где я ошибся или чтото не правильно зделал. Зделал на своем MySQL 5.0 такую таблицу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Потом создал такую SP Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 1) mysql> CALL SaveTest(1,1,"r3","","",1); Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SELECT @return_id,IF(@return_id=0,LAST_INSERT_ID(),@return_id); +------------+----------------------------------------------+ | @return_id | IF(@return_id=0,LAST_INSERT_ID(),@return_id) | +------------+----------------------------------------------+ | 0 | 1 | +------------+----------------------------------------------+ 1 row in set (0.00 sec) но при етом !!!!!!!!! mysql> select * from TTest; +----+----+----+----+----+----+ | id | p1 | p2 | p3 | p4 | p5 | +----+----+----+----+----+----+ | 1 | 1 | r3 | | | 1 | +----+----+----+----+----+----+ 1 row in set (0.00 sec) 2) делаем еще раз mysql> CALL SaveTest(1,1,"r3","","",1); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @return_id,IF(@return_id=0,LAST_INSERT_ID(),@return_id); +------------+----------------------------------------------+ | @return_id | IF(@return_id=0,LAST_INSERT_ID(),@return_id) | +------------+----------------------------------------------+ | 1 | 1 | +------------+----------------------------------------------+ 1 row in set (0.00 sec) здесь всё ок 3)mysql> CALL SaveTest(1,1,"r4","","",1); ERROR 2013 (HY000): Lost connection to MySQL server during query 4) Создаю тестовую php страничку и получается так что SP вызивается реально только один раз :( причем время исполнения приблизительно 0.04 sec. :( Но я использовал PHP Version 4.3.3, пожалуйста у кого есть php 5, потестируйте на нем. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2004, 10:37 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
авторmysql> CALL SaveTest(1,1,"r3","","",1); Query OK, 0 rows affected, 1 warning (0.00 sec) mysql> SELECT @return_id,IF(@return_id=0,LAST_INSERT_ID(),@return_id); +------------+----------------------------------------------+ | @return_id | IF(@return_id=0,LAST_INSERT_ID(),@return_id) | +------------+----------------------------------------------+ | 0 | 1 | +------------+----------------------------------------------+ 1 row in set (0.00 sec) но при етом !!!!!!!!! mysql> select * from TTest; +----+----+----+----+----+----+ | id | p1 | p2 | p3 | p4 | p5 | +----+----+----+----+----+----+ | 1 | 1 | r3 | | | 1 | +----+----+----+----+----+----+ 1 row in set (0.00 sec) Variable scope Вашего @return_id - тело процедуры. Посему, видимо и выскакивает ворнинг при вызове SaveTest, раз переменная не определена. Надо бы определить либо OUT параметр в процедуре, либо глобальную переменную. авторделаем еще раз mysql> CALL SaveTest(1,1,"r3","","",1); Query OK, 0 rows affected (0.00 sec) mysql> SELECT @return_id,IF(@return_id=0,LAST_INSERT_ID(),@return_id); +------------+----------------------------------------------+ | @return_id | IF(@return_id=0,LAST_INSERT_ID(),@return_id) | +------------+----------------------------------------------+ | 1 | 1 | +------------+----------------------------------------------+ 1 row in set (0.00 sec) здесь всё ок У меня все еще 0. Может как-то "случайно" все таки определили как глобальную.:) авторmysql> CALL SaveTest(1,1,"r4","","",1); ERROR 2013 (HY000): Lost connection to MySQL server during query Печально, но факт. Точно так же слетает. авторСоздаю тестовую php страничку... MySQL5.0.0a + PHP5 ...та же самая фигня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 11:16 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Я пробовал работать с ХП MySQL 5.0 на php 4.3.x. Реализовать то что хотел не удалось (нада было написать процедуру поиска и возврата результатов через курсор). Решили ХП в MySQL вообще не использовать, пока их до более-менее нормальной функциональности не доведут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 11:56 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
TemkaЯ пробовал работать с ХП MySQL 5.0 на php 4.3.x. Реализовать то что хотел не удалось (нада было написать процедуру поиска и возврата результатов через курсор). Решили ХП в MySQL вообще не использовать, пока их до более-менее нормальной функциональности не доведут. Вопрос только когда это будет? MySQL doc: автор alpha indicates that the release contains some large section of new code that hasn't been 100% tested. Known bugs (usually there are none) should be documented in the News section. See section C MySQL Change History. There are also new commands and extensions in most alpha releases. Active development that may involve major code changes can occur in an alpha release, but everything will be tested before issuing a release. For this reason, there should be no known bugs in any MySQL release. beta means that all new code has been tested. No major new features that could cause corruption in old code are added. There should be no known bugs. A version changes from alpha to beta when there haven't been any reported fatal bugs within an alpha version for at least a month and we have no plans to add any features that could make any old command unreliable. gamma is a beta that has been around a while and seems to work fine. Only minor fixes are added. This is what many other companies call a release. If there is no suffix, it means that the version has been run for a while at many different sites with no reports of bugs other than platform-specific bugs. Only critical bugfixes are applied to the release. This is what we call a production (stable) release. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 12:51 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Стандартный вопрос: а что мешает использовать PostgreSQL, в котором хранимые процедуры довели до ума уже много лет как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 14:05 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Стандартный ответ: потому что вместо PG лучше использовать FB, который до ума доведен гораздо плотнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 14:23 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Стандартный ответ: заказчик хочет это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 15:01 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
BigHarryСтандартный ответ: потому что вместо PG лучше использовать FB, который до ума доведен гораздо плотнее... Если посмотреть "твой профайл", то сразу видно, что в форум по FB ты не пишешь. Вывод о твоей компетентности в данном вопросе --- упражнение для читателей. :D TemkaСтандартный ответ: заказчик хочет это Заказчик --- фанат альфа-версий? Уважаю. :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 16:47 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Sad Spirit Если посмотреть твой профайл, то сразу видно, что в форум по FB ты не пишешь. Чукча не писатель, чукча читатель. Sad Spirit Вывод о твоей компетентности в данном вопросе --- упражнение для читателей. А вся твоя компетентность в этом конкретном форуме - тупо пропагандировать PG. Я не удивлюсь, если в форуме по PG большинство твоих ответов - советы почитать мануал или факи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2004, 17:04 |
|
||
|
MySQL 5.0 + php 5 + Stored Procedure
|
|||
|---|---|---|---|
|
#18+
Олег ОлеговичVariable scope Вашего @return_id - тело процедуры. Посему, видимо и выскакивает ворнинг при вызове SaveTest, раз переменная не определена. Надо бы определить либо OUT параметр в процедуре, либо глобальную переменную. Тестировал с OUT тоже не работает :( Скажите пожалуйста, может хоть ктото умудрился зделать хоть самую простую SP чтобы она коректно работала на php+MySQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2004, 09:50 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=32733792&tid=1854725]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 511ms |

| 0 / 0 |
