Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Блокировка данных в InnoDB

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
SERIOUS
Отправлено: 20 Сентября, 2011 - 23:56:58
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. mysql_query("START TRANSACTION");
  2. $q = mysql_query("SELECT * FROM klient WHERE stat = 0 OR stat = 3 OR stat = 4 LIMIT 1 FOR UPDATE");
  3. $line = mysql_fetch_array($q, MYSQL_ASSOC);
  4. echo $line['name'];}


вот я такой код использовал для вывода содержимого. Я делал запрос из двух разных браузеров и он мне выводит первую строчку из БД, а на сколько я понял из принципа транзакций, он должен был заблокировать первую строчку после того как я сделал запрос и вывести мне вторую.

суть того что я хочу.
Я хочу чтобы для каждого человека выводилась новая строчка. Т.е он начинал новую транзакцию, которая делала запрос к определённой строчке, и блокировала её. А остальные уже когда начинали новую транзакцию, не видели этой строчки.
Потом когда человек доработает с этой строчкой, т.е. update-нет, то эта строчка становилась видимой. Как я понял из транзакций, они именно для этого и предназначены.

(Отредактировано автором: 21 Сентября, 2011 - 09:22:34)

 
 Top
caballero
Отправлено: 21 Сентября, 2011 - 00:11:13
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




убедись что autocommit выключен


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SERIOUS
Отправлено: 21 Сентября, 2011 - 00:16:34
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. autocommit        ON

из информации о MySQl из PHPMyAdmin
 
 Top
caballero
Отправлено: 21 Сентября, 2011 - 00:31:47
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Ну так выруби
у тебя ж транзакция коммитится сразу
естественно строка разблокируется


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SERIOUS
Отправлено: 21 Сентября, 2011 - 00:35:17
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




окей, расскажи где это вырубать? Просто я уж совсем новичёк в этом деле

Я кстати уже попытался с этим делом мудрить, я сейчас внимательно глянул, у меня перед тем запросом есть ещё один запрос.
И поэтому выглядит всё вот так теперь

PHP:
скопировать код в буфер обмена
  1. mysql_query("START TRANSACTION");
  2. mysql_query("SET AUTOCOMMIT=0");
  3. $q = mysql_query("SELECT * FROM klient WHERE stat = 0 OR stat = 3 OR stat = 4 LIMIT 1 FOR UPDATE");
  4. $line = mysql_fetch_array($q, MYSQL_ASSOC);
  5. echo $line['name'];}

(Отредактировано автором: 21 Сентября, 2011 - 00:37:28)

 
 Top
caballero
Отправлено: 21 Сентября, 2011 - 00:39:22
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




так зачем пишешь такие мудреные запросы если новичек
Где вырубать не помню - спроси у гугла
либо настройка в my.cnf либо запрос специальный либо то и другое

кстати
уверен что правильный синткасис?
mysql_query("SET AUTOCOMMIT=0");

может типа
mysql_query("SET AUTOCOMMIT OFF");

(Отредактировано автором: 21 Сентября, 2011 - 00:40:54)



-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
SERIOUS
Отправлено: 21 Сентября, 2011 - 00:43:16
Post Id


Гость


Покинул форум
Сообщений всего: 87
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




 
 Top
caballero
Отправлено: 21 Сентября, 2011 - 01:35:04
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




значит phpadmin показывает дефолтное значение
я думаю можно запросить соответствующую переменную и вывести данные именно касающееся твоей сесии, в смысле твоего коннекта.
если таки будет off тогда надо гуглить
наверняка ктото натыкался на похожую траблу
на хабре помню что то такое обсуждалось


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB