Конференция "Начинающим" » Много инсертов подряд. [D7, MySQL]
 
  • ryabis © (11.02.10 09:56) [0]
    Delphi 2007 + dbExpress + MySQL 5.0.45
    По таймеру с периодичностью в 1-5 сек. добавляется запись в таблицу:
    qry.Sql.Clear;
    qry.SQL.Add('Insert into MOTION (P_COORD_X, P_COORD_Y) VALUES ( '+floattostr(XTemp1)+', '+floattostr(YTemp1)+');');
    qry.ExecSQL;
    qry.Close;


    Возникла проблема с тем, что когда кол-во добавленных подряд записей достигает определенного значения выскакивает ошибка
    can't create a new thread (errno 12); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug


    Понятно, что переполняется буфер в MySQL. Пытался увеличить его размер, но это не помогло.
    Как сделать так, чтобы буфер автоматом освобождался и записи могли непрерывно добавляться?
  • Sergey13 © (11.02.10 10:08) [1]
    1. Что мешает использовать параметрический запрос?
    2. Коммит делаешь когда нибудь?
  • ryabis © (11.02.10 10:28) [2]
    1. Какая разница как отправлять запрос? Данные же все равно "сыпятся" в базу одинаково?
    2. Когда делаю коммит, начинает ругаться.
  • sniknik © (11.02.10 10:34) [3]
    > Данные же все равно "сыпятся" в базу одинаково?
    кто вам сказал такую глупость?

    > 2. Когда делаю коммит, начинает ругаться.
    делай в процессе периодически, а не один раз в конце работы.

    > qry.Close;
    лишнее
  • 12 © (11.02.10 12:52) [4]
    если 1-2 секунды, думаю, можно и после каждой коммитить
  • Плохиш © (13.02.10 13:15) [5]

    > qry.Sql.Clear;
    > qry.SQL.Add

    qry.SQL.Text :=
  • KilkennyCat © (13.02.10 13:22) [6]
    А если не коммить, то смысл выполнять запрос? Не логичнее ли его аккумулировать?
 
Конференция "Начинающим" » Много инсертов подряд. [D7, MySQL]
Есть новые Нет новых   [134435   +34][b:0][p:0.001]