







|
MySQL.RU - Webboard
Вернуться
Коллизия создания таблиц (Ca va) 19/07/2002 - 07:27:29
Re: Коллизия создания таблиц (UPS) 19/07/2002 - 08:04:30
Re: Коллизия создания таблиц (Ca va) 19/07/2002 - 15:53:16
Re: Коллизия создания таблиц (walrus) 19/07/2002 - 22:28:29
Re: Коллизия создания таблиц (Вик) 20/07/2002 - 01:44:10
Re: Коллизия создания таблиц (Ca va) 20/07/2002 - 18:33:48
Re: Коллизия создания таблиц (Ca va) 20/07/2002 - 18:36:24
Re: Коллизия создания таблиц (walrus) 21/07/2002 - 00:48:54
> Original message text:
> From: Ca va - 19/07/2002 - 07:27:29
> Subject:Коллизия создания таблиц
> -----------------
> Я создаю некий временный набор таблиц, по окончанию заполнения которых обьединяю с основной базой. Так как инициатором создания выступает случайный пользователь, то таблицы я стремлюсь создать уникальные - в название таблицы вношу результат функции time() и создаю таблицы с параметром IF NOT EXISTS. Получается, что минимальное время между возможными процессами создания таблиц - одна секунда. Однако вероятность коллизии, когда два инициатора попытаются обратиться в одну секунду - возможна. Тот кто фактически раньше начнет запрос на создание тот реально сможет создать набор таблиц и будет с ним работать. Второй должен вылететь с ошибкой.
> Как обработать эту ошибку в perl, используя стандартный модуль DBI? Программа прекращается и все - как перехватить ошибку, опознать ее код и отработать самому?
>
From: walrus - 19/07/2002 - 22:28:29
Subject:Коллизия создания таблиц
-----------------
Значит так:
1) в mysql есть возможность создавать временные таблицы которые не видны другим пользователям.
create temporary table .....
при этом таблицы с одинковыми именами у разных пользователей не пересекаются и не видны друг другу.
2) Если это не годится - почему бы не создавать таблицы с названием типа какойтопрефикс.имяпользователя.time, я не думаю что пользватель сможет создать по 2 таблицы в секунду
3) Если хошь обрабатывать DBI ошибки ручками, нужно при открытии базы это указать
$dbh=DBI->connect($dsn,$user,$passwd,{RaiseError => 0});
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
3704
|
|