[MySQL 5.1] пофиксить запрос

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35056
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

[MySQL 5.1] пофиксить запрос

Непрочитанное сообщение Alex Keda » 2011-06-06 12:52:19

есть такой неправильный запрос, в общем доносящий смысл того что пытаются сделать

Код: Выделить всё

ALTER TABLE `Clauses` ADD KEY `ClausesPartition` (`Partition`) IF NOT EXISTS (SHOW KEYS FROM `Clauses` WHERE Key_name = 'ClausesPartition');
надо добавить ключ, если он не существует. и не добавлять если существует.
впрое простая операция - но чё-то не выходит каменный цветок.

гугление ничего не принесло - толи ни у кого этой проблемы нету, толи всё настока просто, что никто даже не спршивает =((
Убей их всех! Бог потом рассортирует...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2460 рублей (8 CPU, 8Gb RAM, 2x500Gb HDD, RAID 3ware 9750):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Gamerman
капитан
Сообщения: 1715
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение Gamerman » 2011-06-06 13:30:45

Если ключ существует, то при добавлении ключа мускуль ругнется да и все. Или это критично?
Глюк глюком вышибают!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35056
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение Alex Keda » 2011-06-06 14:06:26

критично.
php обвёртка на этом тут же отваливается и остальные запросы не проходят
Убей их всех! Бог потом рассортирует...

Аватара пользователя
FreeBSP
майор
Сообщения: 2020
Зарегистрирован: 2009-05-24 20:20:19
Откуда: Москва

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение FreeBSP » 2011-06-06 18:23:00

в синтаксисе 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) если при попытке удаления несуществующего ключа система не будет падать -
сначала удалять ключ, а потом добавлять
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!

rmn
старшина
Сообщения: 427
Зарегистрирован: 2008-10-03 18:52:02

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение rmn » 2011-06-06 21:30:03

FreeBSP писал(а): 1) если не критична скорость, настругать обвертку для запроса на пхп типа как
если есть возможность сделать запрос в обход фреймворка, зачем делать проверки? просто игнорим ошибку...

Код: Выделить всё

@mysql_query('ALTER TABLE ... ADD KEY ... ');

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35056
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение Alex Keda » 2011-06-07 19:01:14

обвёртку трогать не могу.
могу тока запрос пилить как хочу.
хоть процедуры писать хоть что.
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Gamerman
капитан
Сообщения: 1715
Зарегистрирован: 2009-05-17 21:01:23
Откуда: Украина, Ужгород - Днепр
Контактная информация:

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение Gamerman » 2011-06-07 20:35:59

так процедуру можно накатать, которая и будет делать все что нужно. А в запросе вызов процедуры сделать.
Глюк глюком вышибают!

FiL
ст. лейтенант
Сообщения: 1360
Зарегистрирован: 2010-02-05 0:21:40

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение FiL » 2011-06-07 22:29:44

http://dev.mysql.com/doc/refman/5.1/en/ ... index.html

читать последний камент.

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: [MySQL 5.1] пофиксить запрос

Непрочитанное сообщение zg » 2011-06-12 8:29:01

Alex Keda писал(а):гугление ничего не принесло - толи ни у кого этой проблемы нету, толи всё настока просто, что никто даже не спршивает =((
такой проблемы в мусе нету, поскольку есть IGNORE

Код: Выделить всё

ALTER IGNORE TABLE `Clauses` ADD KEY `ClausesPartition` (`Partition`)