Решение ошибки 1918 при установке MySQL ODBC Driver

Обнаружил однажды при установке MySQL ODBC Driver 5.3.7 следующую ошибку:

Читать далее «Решение ошибки 1918 при установке MySQL ODBC Driver»

Изменение max_connections в MySQL

Стандартно параметр max_connections в MySQL имеет значение 151 и разрешается на одно соединение больше, то есть может быть 152 соединения.
В случае если соединений будет больше, то будет ошибка «too many connections».
На примере использую MySQL 5.5.54.

Читать далее «Изменение max_connections в MySQL»

Решение ошибки в phpMyAdmin «Данная таблица не содержит уникального столбца»

Нужно было однажды изменить некоторые данные в MySQL базе данных, решил воспользоваться phpMyAdmin и столкнулся с сообщением:

Читать далее «Решение ошибки в phpMyAdmin «Данная таблица не содержит уникального столбца»»

Решение ошибки «Расширение mysqli|mysql не найдено»

Заметил как-то на одном из новых Ubuntu серверов ошибку при открытии phpMyAdmin — «Расширение mysqli|mysql не найдено».

Читать далее «Решение ошибки «Расширение mysqli|mysql не найдено»»

Решение ошибки «Using unique option prefix pass instead of password is deprecated …»

Заметил как-то ошибки приходящие на почту root с темой и текстом:

Cron /usr/bin/test -x /usr/local/cpanel/scripts/update_db_cache && /usr/local/cpanel/scripts/update_db_cache
Warning: Using unique option prefix pass instead of password is deprecated and will be removed in a future release. Please use the full name instead.

Проблема кроется в файле ~/.my.cnf, то есть /root/.my.cnf в моем случае.

В котором параметр «pass» устарел и должен быть изменен на новый «password».

Например вот так было когда ошибка возникала:

[client]
user=root
pass=пароль

Изменил на password и ошибка исчезла:

[client]
user=root
password=пароль

Смотрите также:
Подключение к MySQL из localhost без ввода пароля

Настройка MySQL сервера. Описание конфигурационного файла

Перед началом настройки сделаем резервную копию файла конфигурации:

Читать далее «Настройка MySQL сервера. Описание конфигурационного файла»

Решение ошибки #1064 — You have an error in your SQL syntax

Заметил однажды при выполнении SQL запроса ошибку следующего содержания:

Читать далее «Решение ошибки #1064 — You have an error in your SQL syntax»

Выполнение SQL запроса из скрипта в Linux

Понадобилось недавно написать скрипт выполняющий sql запрос в базу MySQL.
Пример содержимого:

# Описание, тут я написал для других что скрипт добавлен в crontab, дабы его не переместили
mysql -u ПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ -h 127.0.0.1 -e "UPDATE nika_system.abon SET otkl=0 WHERE depozit > '10' AND (otkl='-1' OR otkl='-2');";

Чтобы скрипт выполнялся автоматически, откроем в любом текстовом редакторе файл crontab (в редакторе nano CTRL+X для выхода и y/n для сохранения или отмены изменений):

sudo nano /etc/crontab

Добавим в него следующую строку:

0 9 * * * root /home/nika/scripts/reset_credit_nika.sh > /dev/null 2>&1

Теперь ежедневно в 9 утра скрипт будет выполняться.

Приведу пример ежедневного автоматического вывода данных из sql таблицы в текстовый файл:

#!/bin/bash
mysql -u ПОЛЬЗОВАТЕЛЬ -pПАРОЛЬ -h 192.168.1.1 -s -N -e "SELECT id FROM nika_system.abon WHERE tarif=109;";

В /etc/crontab добавим:

0 8 * * * root /scripts/freektb.sh > /srv/samba/dir/mirazh/$(date +%Y-%m-%d).txt

В целях безопасности лучше не указывать пароль в скриптах, смотрите мою статью — Подключение к MySQL из localhost без ввода пароля

Решение ошибки запуска MySQL «Unknown/unsupported storage engine: InnoDB»

Заметил недавно ошибку запуска MySQL сервера:

Читать далее «Решение ошибки запуска MySQL «Unknown/unsupported storage engine: InnoDB»»

SQL запросы для АСРМ «Ника»

Недавно нужно было написать несколько sql запросов для биллинга АСРМ «Ника», поэтому выложу их:

Смена тарифа абонентам:

UPDATE abon SET tarif=57 WHERE tarif=58;
UPDATE abon SET tarif=137 WHERE tarif=122 AND id=1478;
UPDATE abon SET tarif=123 WHERE tarif=159 AND street=216;

Очистка старой истории трафика:

DELETE FROM opt_traffic where date < '2016-05-01';
DELETE FROM stat_traffic where date < '2016-05-01';

Очистка старой истории предоставленных услуг:

DELETE FROM stat_serv where date < '2016-01-01';

Очистка старой SNMP истории модемов:

DELETE FROM stat_snmp where date < '2014-01-01';

Сумма платежей за предыдущий день:

SELECT SUM(money) FROM nika_system.mon WHERE date= CURDATE() - INTERVAL 1 DAY;

Количество абонентов отключенных за неуплату:

SELECT count(*) FROM nika_system.abon WHERE killed='killed' AND state=1;

Количество абонентов отключенных оператором:

SELECT count(*) FROM nika_system.abon WHERE killed='killed' AND state=2;

Количество всех активных абонентов:

SELECT count(*) FROM nika_system.abon WHERE killed='';

Количество активных абонентов со статусом «Включен и не отключается»:

SELECT count(*) FROM nika_system.abon WHERE killed='' AND state=3;

Количество абонентов добавленых в 2016 году:

SELECT count(*) FROM nika_system.abon WHERE datetime LIKE '2016%';

Изменение или удаление начисленной услуги абоненту (где serv — ID услуги):

UPDATE stat_serv SET serv='131' WHERE user='767' AND date='2016-02-04' AND serv='64';
DELETE FROM stat_serv WHERE user='3977' AND date='2016-02-23' AND serv='64';

Пример обнуления кредита пользователям у которых кредит от -1 до -30 и на счету больше 10 грн.:

SELECT * FROM `abon` WHERE otkl = '-5' AND depozit > '10';
UPDATE abon SET otkl=0 WHERE depozit > '10' AND (otkl='-1' OR otkl='-2' OR otkl='-3' OR otkl='-4' OR otkl='-5' OR otkl='-6' OR otkl='-7' OR otkl='-8' OR otkl='-9' OR otkl='-10' OR otkl='-11' OR otkl='-12' OR otkl='-13' OR otkl='-14' OR otkl='-15' OR otkl='-16' OR otkl='-17' OR otkl='-18' OR otkl='-19' OR otkl='-20' OR otkl='-21' OR otkl='-22' OR otkl='-23' OR otkl='-24' OR otkl='-25' OR otkl='-26' OR otkl='-27' OR otkl='-28' OR otkl='-29' OR otkl='-30');

Пример выбора ID не отключенных абонентов с указанными тарифами и сортировкой по возрастанию:

SELECT id FROM nika_system.abon WHERE (tarif='121' OR tarif='135' OR tarif='136') AND killed='' ORDER BY id ASC

Изменение категории пользователям на указанной улице:

UPDATE abon SET category=1 WHERE category=7 AND street = 145;

Изменение группы для пользователей с указанными улицами:

select * FROM abon where street=74;
update abon set groups=73 where street=74;
update abon set groups=73 where (street=14 OR street=74 OR street=81 OR street=86 OR street=134 OR street=144 OR street=152 OR street=154 OR street=249 OR street=277 OR street=283 OR street=290 OR street=292 OR street=329);