MYSQL modifie toutes les tables d’une base

1
2
3
4
5
USE INFORMATION_SCHEMA;
SELECT
CONCAT("ALTER TABLE ", TABLE_SCHEMA ,".", TABLE_NAME, "ENGINE=MEMORY;")
AS MySQLCMD FROM TABLES
WHERE TABLE_SCHEMA = "MA_BASE";

Liste tous les champs d’une table dans un tableau PHP

1
2
3
4
5
USE INFORMATION_SCHEMA;
SELECT
CONCAT('$variable["', COLUMN_NAME ,'"]')
FROM COLUMNS
WHERE TABLE_SCHEMA = "mabase" AND TABLE_NAME='matable';

MariaDB notes

après copie du contenu du répertoire mysql d’un serveur vers un autre pour corrigé les évolutions du format

1
mysql_upgrade --force  -uuser -ppassword

Réplication
slave my.cnf

1
2
3
4
5
6
7
8
9
10
11
12
13
slave-parallel-threads=4
 
server-id       = 03
relay-log-index = /home/mysql/mysql_log/slave-relay-bin.index
relay-log       = /home/mysql/mysql_log/slave-relay-bin
 
replicate-do-db = base1
replicate-do-db = base2
replicate-do-db = base3
 
replicate-ignore-table  = base1.table_pas_ok
replicate-ignore-table  = base2.table_pa_ok
slave-skip-errors = 1236,1146,1032
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
master show master status; -> noter file et pos exmaster1-bin.030648, 50302757
 
slave
STOP SLAVE;
 
change master to
master_host='hostname',
master_user='user_copy',
master_password='user_pass',
master_port=3306,
master_log_file='master1-bin.030648',
master_log_pos=50302757,
master_connect_retry=10;
 
START SLAVE;

MARIADB LOAD DATA ERREUR apparmor ou CONNECT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
edit /etc/apparmor.d/usr.sbin.mysqld
Ajouter les répertoires contenant les csv pour LOAD
/usr/sbin/mysqld {
    [...]
        /home/www/douane/export/ftp_tempo/ r,
        /home/www/douane/export/ftp_tempo/* rw
    /home/mysql_log r,
    /home/mysql_log/** rwk
    [...]
}
 
/etc/init.d/apparmor reload
 
 
Autre pb selon serveur
 
/etc/systemd/system/mysqld.service -> ProtectHome=false
/lib/systemd/system/mariadb.service and /lib/systemd/system/mariadb@.service
ou sudo systemctl edit mariadb.service
systemctl daemon-reload
/etc/init.d/mysql stop
/etc/init.d/mysql start
 
On peut alors faire
CREATE DATABASE DBF_TABLES CHARACTER SET CP850;
USE DBF_TABLES;
CREATE TABLE stock engine=CONNECT table_type=DBF READONLY=0 file_name='/home/lecteurh/dbf/fichiers/stock.dbf';
Pour certaines version -> erreur 174
CREATE TABLE stock engine=CONNECT table_type=DBF READONLY=0
 option_list='Accept=1' file_name='/home/lecteurh/dbf/fichiers/stock.dbf';
 
création d'au moins un index:
ALTER TABLE `stock` ADD PRIMARY KEY (`id_stock`);
-> fichier stock.dbx créé <- vérifier car pas de message d'erreur si pb de droits