Страница 1 из 1
[MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-06 12:52:19
Alex Keda
есть такой неправильный запрос, в общем доносящий смысл того что пытаются сделать
Код: Выделить всё
ALTER TABLE `Clauses` ADD KEY `ClausesPartition` (`Partition`) IF NOT EXISTS (SHOW KEYS FROM `Clauses` WHERE Key_name = 'ClausesPartition');
надо добавить ключ, если он не существует. и не добавлять если существует.
впрое простая операция - но чё-то не выходит каменный цветок.
гугление ничего не принесло - толи ни у кого этой проблемы нету, толи всё настока просто, что никто даже не спршивает =((
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-06 13:30:45
Gamerman
Если ключ существует, то при добавлении ключа мускуль ругнется да и все. Или это критично?
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-06 14:06:26
Alex Keda
критично.
php обвёртка на этом тут же отваливается и остальные запросы не проходят
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-06 18:23:00
FreeBSP
в синтаксисе ALTER TABLE упоминания про IF NOT EXIST
я не увидел, зато это явно упоминается в синтаксисе
CREATE TABLE
мне видятся такие варианты:
1) если не критична скорость, настругать обвертку для запроса на пхп типа как
Код: Выделить всё
if (!mysql_num_rows(mysql_query("SHOW KEYS FROM `Clauses` WHERE Key_name = 'ClausesPartition')")) {
mysql_query(ALTER TABLE `Clauses` ADD KEY `ClausesPartition` (`Partition`)
2) если при попытке удаления несуществующего ключа система не будет падать -
сначала удалять ключ, а потом добавлять
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-06 21:30:03
rmn
FreeBSP писал(а):
1) если не критична скорость, настругать обвертку для запроса на пхп типа как
если есть возможность сделать запрос в обход фреймворка, зачем делать проверки? просто игнорим ошибку...
Код: Выделить всё
@mysql_query('ALTER TABLE ... ADD KEY ... ');
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-07 19:01:14
Alex Keda
обвёртку трогать не могу.
могу тока запрос пилить как хочу.
хоть процедуры писать хоть что.
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-07 20:35:59
Gamerman
так процедуру можно накатать, которая и будет делать все что нужно. А в запросе вызов процедуры сделать.
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-07 22:29:44
FiL
Re: [MySQL 5.1] пофиксить запрос
Добавлено: 2011-06-12 8:29:01
zg
Alex Keda писал(а):гугление ничего не принесло - толи ни у кого этой проблемы нету, толи всё настока просто, что никто даже не спршивает =((
такой проблемы в мусе нету, поскольку есть IGNORE
Код: Выделить всё
ALTER IGNORE TABLE `Clauses` ADD KEY `ClausesPartition` (`Partition`)