Заметил недавно ошибку запуска 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);
Примеры MySQL запросов
Приведу ниже пример некоторых MySQL запросов.
Читать далее «Примеры MySQL запросов»Как вытащить данные из одного столбца mysql таблицы
Чтобы увидеть данные из одно столбца, достаточно выполнить SQL запрос (где «abcd» — имя столбца в таблице):
SELECT abcd FROM table;
Для экспорта в файл достаточно выполнить команду в Linux:
mysql -u root -e "SELECT abcd FROM database;" -s -N > file.txt
Приведу пример экспорта email адресов из mysql таблицы на http страницу используя PHP.
Мысль сразу пришла такого плана (создаем php файл и открываем его через браузер):
<?php // Соединяемся с mysql сервером mysql_connect("localhost", "USER", "PASSWORD") or die (mysql_error ()); // Выбираем базу данных mysql_select_db("users") or die(mysql_error()); // SQL-запрос $rows = "SELECT * FROM account"; // Выполняем этот SQL-запрос $d = mysql_query($rows); // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array while($row = mysql_fetch_array($d)) { // Выводим значения столбца email echo $row['email'] . "<br />"; } // Закрываем соединение с базой данных mysql_close(); ?>
Сброс пароля root пользователя для MySQL
Приведу вариант изменения пароля root пользователя для MySQL.
Читать далее «Сброс пароля root пользователя для MySQL»online.pl скрипт количества пользователей онлайн
Приведу пример скрипта выполняющего sql запрос в mysql базу с выводом результата. Можно прицепить его к графикам Zabbix, Cacti и т.д. чтобы мониторить например количество игроков онлайн на каком нибудь игровом сервере.
#!/usr/bin/perl use DBI; my $host = "localhost"; my $port = "3306"; my $user = "root"; my $pass = ""; my $db = "test"; $dbh = DBI->connect("DBI:mysql:$db:$host:$port",$user,$pass); $sth = $dbh->prepare("SELECT count(id) FROM `online`"); $sth->execute; while ($ref = $sth->fetchrow_arrayref) { print "$$ref[0]\n"; } $rc = $sth->finish; $rc = $dbh->disconnect;
Установка и настройка MySQL сервера на Ubuntu
Установить MySQL сервер и клиент в Ubuntu/Debian можно так:
Исправление ошибки MySQL: Can’t create table ‘tablename’ (errno: 150)
Ошибка MySQL: Can’t create table ‘tablename’ (errno: 150) может возникать когда вы например заливаете бэкап и MySQL питается создать таблицу 1 которая ссылается на таблицу 2, которой по сути еще нету. Решить можно вставив в бэкап строки в начале:
Читать далее «Исправление ошибки MySQL: Can’t create table ‘tablename’ (errno: 150)»