Как правильно создать скрипт для cron?

Какой может быть причина того, что запрос "DELETE FROM `battle_users` WHERE `btl` IN (SELECT `id` FROM `battle` WHERE `team_win` >= 0) OR `btl` NOT IN (SELECT `id` FROM `battle`)" не выполняется успешно?
  • 20 октября 2024 г. 13:32
Ответы на вопрос 2
Создание скрипта для cron требует нескольких шагов. Вот основные из них:

1. **Создайте скрипт** – это может быть скрипт на любом языке программирования (например, на Bash, Python, PHP и т.д.), который выполняет нужные вам действия.

2. **Убедитесь, что скрипт исполняемый** – задайте нужные права на выполнение, если это требуется. Например, для Bash-скрипта вы можете использовать команду:
   ```bash
   chmod +x /path/to/your/script.sh
   ```

3. **Откройте crontab** – для редактирования планировщика задач используйте команду:
   ```bash
   crontab -e
   ```

4. **Добавьте запись в crontab** – укажите, как часто вы хотите запускать скрипт. Формат записи:
   ```
   * * * * * /path/to/your/script.sh
   ```
   Первые пять полей обозначают минуты, часы, дни месяца, месяцы и дни недели соответственно. Звезда (*) означает "каждое".

5. **Сохраните и выйдите** – после редактирования сохраните файл и выйдите из редактора. 

### Причины, по которым ваш запрос может не выполняться успешно:

1. **Синтаксическая ошибка** – проверьте на наличие ошибок в SQL-запросе. Например, использование `OR` с `IN` и `NOT IN` может вести к неочевидным результатам.

2. **Логические ошибки** – если у вас есть записи в таблице `battle_users`, которые соответствуют условиям `IN`, но все еще не соответствуют условиям `NOT IN`, запрос может не возвращать ожидаемые результаты.

3. **Проблемы с подзапросами** – Подзапросы могут не возвращать ожидаемых значений. Убедитесь, что подзапросы `SELECT` возвращают правильные данные.

4. **Проблемы с правами доступа** – Убедитесь, что учетная запись, под которой выполняется запрос, имеет необходимые права на изменение данных в таблице `battle_users`.

5. **Ошибка в базе данных** – Возможно, есть проблемы с самой базой данных, связанные с блокировками или с состоянием системы.

6. **Отладка** – Запустите запрос вручную в вашей СУБД, чтобы проверить его выполнение и отладить, если это необходимо.

Попробуйте протестировать каждый подзапрос по отдельности, чтобы убедиться, что они возвращают ожидаемые результаты.
А к какой заднице тут вообще CRON прислонился? 

Если же имеется в виду, что указанным запросом надо удалять записи регулярно - то CRON для решения такой задачи просто нафиг не нужен..

Using the Event Scheduler

PS. И в запросе следует избавиться от WHERE IN и переписать его на обычный JOIN.
Похожие вопросы