Установка MySQL 5.7 на CentOS 9

Вы ищете руководство, которое поможет вам установить MySQL 5.7 на Linux-сервере или рабочей станции CentOS 9/RHEL 9?

Шаг 1. Добавьте репозиторий MySQL

Отключите репозиторий AppStream MySQL по умолчанию:

sudo dnf remove @mysql
sudo dnf module reset mysql
sudo dnf module disable mysql

Для EL 9 нет репозитория MySQL, поэтому вместо него мы будем использовать репозиторий EL 7. Создайте новый файл репозитория.

sudo mcedit /etc/yum.repos.d/mysql-community.repo
Читать далее «Установка MySQL 5.7 на CentOS 9»

Mysql 5.7 группировка по старому

Многие столкнулись с проблемой, что в версии MySQL 5.7 не возможно использовать привычную группировку GROUP BY и это сильно мешает при переходе старых сайтов на новую базу данных.

Но решение есть, открываем файл my.cfg и добавляем в него следующую строчку:

sql-mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

и перезагружаем базу

systemctl restart mysqld

MySQL: вставить запись, если она не существует в таблице

CREATE TABLE `table_listnames` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) NOT NULL,
  `address` varchar(255) NOT NULL,
  `tele` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB;

Вставить запись:

Читать далее «MySQL: вставить запись, если она не существует в таблице»

Аналог LIMIT в Mysql

USE [new-satro];
GO

SELECT * FROM (
    SELECT TOP 10 * FROM (
        SELECT TOP 120 T.[id_t]
        ,T.[parent_id_t]
        ,T.[title_t]
        ,T.[min_op_t]
        ,T.[brend]
        ,T.[cena]
        ,T.[nali4ie]
        ,T.[artik]
        ,T.[cena_opt]
        ,T.[kolvo]
        ,T.[kolvo_yd_sklad]
        ,T.[full_op_t]
        ,T.[mgc]
        ,TV.VSEGO 
        FROM [tovari] T
        LEFT JOIN ( SELECT COUNT([ID]) AS VSEGO, [TOVAR] FROM [tovari_view] GROUP BY [TOVAR] ) as TV on TV.[TOVAR]=T.[artik] 
        ORDER BY T.[id_t] ASC
    ) AS inner_tbl ORDER BY [id_t] DESC
) AS outer_tbl ORDER BY [id_t] ASC
GO
Читать далее «Аналог LIMIT в Mysql»

Индексы

Создает индекс в таблице. Допускаются повторяющиеся значения

CREATE INDEX "artik" ON [dbo].[photogall] (artik_poz);

artik — название индекса

artik_poz — колонка по которой проставляется индекс

Создает уникальный индекс в таблице. Дублирующие значения не допускаются

CREATE UNIQUE INDEX "artik" ON [dbo].[photogall] (artik_poz);

artik — название индекса

artik_poz — колонка по которой проставляется индекс

Правильная работа с базой MSSQL

$server="SERVER_IP";
$user="USER_NAME";
$pass="USER_PASS";
$database="BASE";

print "--START--<br>";
try{
    $db = mssql_connect($server, $user, $pass);
    if (!$db) throw new Exception ("Невозможно установить соединение с базой данных.");
    if (!mssql_select_db($database,$db)) throw new Exception ("Невозможно выбрать базу данных.");
###
    $query1 = "SET CONCAT_NULL_YIELDS_NULL ON"; # настройка для MSSQL (чтобы 'string'+NULL давало NULL, а не 'string')
    if(!mssql_query($query1)) throw new Exception("Невозможно установить SET CONCAT_NULL_YIELDS_NULL ON");
### 
    $querys = "EXEC [dbo].[REP_OrdersClient] @DateBegin = '20180501', @DateEnd = '20180704', @ContractNumberPrimary = '12', @ContractNumber = '38957'";
    $result=mssql_query($querys);
    
    if (!$result) throw new Exception("Невозможно установить соединение с сервером");
    if (!mssql_num_rows($result)) {
        echo 'Не найдено ни одной записи.';
    } else {
        while ($row = mssql_fetch_array($result, MSSQL_ASSOC)) {
            $results[]= $row;
        }
    }
    mssql_free_result($result);
}
catch(Exception $e){
    echo $e->getMessage();
}
print_r($results);

Репликация в MySQL

Для того, чтобы организовать репликацию между двумя MySQL-серверами необходимо:

На master-сервере

1) Включить binarylog, если он еще не включён и назначить master-серверу идентификатор (server-id). Для этого в my.cnf добавить и перегрузить:

log-bin=/var/db/mysql/srv011-bin.log
server-id = 1

2) Создать пользователя с правами:

GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '';
FLUSH PRIVILEGES;
Читать далее «Репликация в MySQL»