|  | 
Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
В базе test создаю таблицу t1 c одной записью:
USE `test`;
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
  `ID` int NOT NULL default '0',
  `RAZ` float default '0',
  PRIMARY KEY  (`ID`)
 ) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
INSERT INTO `t1` (`ID`,`RAZ`) VALUES  (283,1.81051);
Линкую test.t1 в MSA через ODBC и, открыв ее, пытаюсь изменить поле ID. Получаю сообщение о том, что запись блокирована другим пользователем. Корректировка через запрос проходит нормально.
Повторяю предыдущие действия, но 
INSERT INTO `t1` (`ID`,`RAZ`) VALUES  (283,1);
м снова пытаюсь корректировать. Всё ОК!
Экcперименты показали, что
1. В myISAM этого эффекта нет
2. В InnoDB: 
   2.1. Cитуация зависит от того, какое значение я заношу в поле REZ
   2.2. Все нормально, когда вместо FLOAT ставлю DOUBLE или INTEGER
Как это можно объяснить?
Неактивен

А посмотрите количество соединений с базой? Не знаю, как 2003й, а у старого
аксесса были проблемы с пониманием, сколько подключений ему нужно. В частности,
он может держать одну запись открытой формой, а вторую пытаться сделать через
запрос.
Неактивен
Соединений ровнг одно.
Дополняю:
если внутри MSA делаю запрос:
update T1 set RAZ=1.25 where ID=283
то блокировка снимается.
Неактивен

Сложно сказать, боюсь, что надо смотреть запросы, которые приезжают ![]()
Попробуйте включить --log и посмотреть, что там реально приезжает.
Неактивен
Не в запросе дело.
Выполняю из консоли:
USE `test`;
DROP TABLE IF EXISTS `t1`;
CREATE TABLE `t1` (
  `ID` int NOT NULL default '0',
  `RAZ` float default '0',
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
INSERT INTO `t1` (`ID`,`RAZ`) VALUES  (283,1.81051);
Присоединяю в MSA - не могу изменить: запись блокирована.
Из консоли выполняю
UPDATE `t1` SET `RAZ`= 1.25;
Присоединяю в MSA - все в порядке, могу менять запись. А вся разница лишь в значении RAZ                                       
Причем можно назвать и еще ряд чисел, когда так происходит.
Эта штука выяснилась, когда мы качнули из MSA на 50000 записей и в ней куча FLOAT
Поменяли на DOUBLE и все работает нормально.
А как быть если все-же FLOAT?
Неактивен

Круто. Разумно я это никак объяснить не могу, правда. Ну то есть правильный
ответ тут: «скорее всего, это ошибка в MSA, т.к. в любых других программах
не проявляется», но почему так — интересно. Кстати, пробовали с другим
драйвером ODBC, может быть, бага в нем?
Неактивен
Во-первых:
по поводу ODBC у меня выбор небольшой (см. мои с Вами переговоры здесь же http://sqlinfo.ru/forum/viewtopic.php?id=1635).
Самое интересное, что когда я на блокированную запись
       INSERT INTO `t1` (`ID`,`RAZ`) VALUES  (283,1.81051);
из MSA делаю запрос
       UPDATE t1 SET RAZ= 1.81051 WHERE ID=283
то блокировка уходит.
Во-вторых:
у меня такое впечатление, что на этом форуме MSA+mySQL неактуально. Может быть посоветуете другое место?
Неактивен

Хм, как-то это печально выглядит ![]()
Блокировка происходит не в сервере MySQL, Вы же можете из консоли при этом работать с
базой? Это какая-то внутренняя блокировка внутри MSA. Дело, конечно, не в значениях 
FLOAT, а в каких-то ошибках. Или драйвер ODBC, или сам Access. Обновление всего лишь
сбрасывает какие-то внутренние блокировки, и все начинает работать.
Как это лечить — не известно. Если нужно продакшн-решение — переключайтесь в режим,
когда все работает (DOUBLE, Вы говорили, работает?) ![]()
Другое место, боюсь, не посоветую. Нужно найти где-то место, где обсуждают Аксесс...
Неактивен
Спасибо за внимание. Тема закрыта.
Неактивен
Страниц: 1