mysql locking tables bug?

7 отговора 253 прегледа
#1

mysql locking tables bug?

Защо, когато заключа дадена таблица, не мога да използвам псевдоним, когато я свързвам...това бъг ли е?

mysql> lock tables bank write, taxes write;
Query OK, 0 rows affected (0.16 sec)

mysql> select * from bank b, taxes t where b.tid=t.id;
ERROR 1100: Table 'b' was not locked with LOCK TABLES

И втори въпрос. Защо, ако не съм заключил някоя таблица за писане, тя се заключва автоматично за четене? Това го пише в документацията, но защо?

Обмисляне - търсене на оправдание за вече прието решение.
Отговор
в отговор на Dakota #2

Re: mysql locking tables bug?

xmmmmmmmmmm.....
tuka daje i salle ne se namesi, na4i vyprosa e slojen ;) Edinstvenoto koeto mi idva na uma e, 4e ne vijdam kyde si zadal presvdonima... ne trqbva li da e "from bank as b"? ili ako tova e validen na4in za zadavane na psevdonim /*ne gi pomnq dobre tiq ne6ta */, ne trqbva li da go zadade6 o6te v "lock tables"?



The things are always changing I think that it`s allright

Отговор
в отговор на voyager #3

Re: намеси се на друго място :)

1-вия въпрос на Dakota не е сложен ама хич - така пише в документацията.
mysql.online.bg/documentation/mysql/bychapter/manual_Reference.html#LOCK_TABLES
When you use LOCK TABLES, you must lock all tables that you are going to use and you must use the same alias that you are going to use in your queries! If you are using a table multiple times in a query (with aliases), you must get a lock for each alias!

2-рия въпрос всъщност въпрос ли е?

salle.online.bg/sig
Отговор
в отговор на salle #4

ama otgovori i na mene de :]

ne trqbva li da se zadava psevdonima o6te pri lock-vaneto?




Mi taka de, nqkoi 4etem knijki, a ne dokumentaciqta :)

Отговор
в отговор на voyager #5

Re: ama otgovori i na mene de :]

Еми нали точно това изкопирах от ръководството - трябва.

LOCK TABLES tbl_1 AS t1 tbl_1 AS t2 ... и т.н.

salle.online.bg/sig
Отговор
в отговор на salle #6

Re: ama otgovori i na mene de :]

aaa da :)) taka e po-qsno :D 10x

Отговор
в отговор на salle #7

10х

Не много умно от страна на mysql, но мерси все пак.

Второто е въпрос. Каква е логиката?

Обмисляне - търсене на оправдание за вече прието решение.
Отговор
в отговор на Dakota #8

Re: 10х

За да се избегне опасност от Deadlock - нещо не мога да му измисля добър превод

т.е. ако една таблица се използва 2 пъти в една заявка тя трябва и да се заключи два пъти. Ако е позволено да изпълняваш заявка в която само една от таблиците е заключена това много лесно може да доведе до запушване.
Не забравяй, че идеята е да осигуриш коректно съдържание на таблиците при многозадачна работа.

Всъщност това е и част от причината т.нар. Snapshots да работят по-добре при тежка многозадачност от Lock.

Ама тука вече задълбахме яко ....

salle.online.bg/sig
Отговор