Faire fonctionner MySQL sous Windows
<<<
MySQL pour Windows face à MySQL pour Unix Installation standard rapide de MySQL
>>>

2.2.1 Installer MySQL sous Windows
2.2 Installation standard rapide de MySQL
2 Installer MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Prérequis système sur Windows
Installation d'une distribution binaire sur Windows
Préparation de l'environnement MySQL de Windows
Choisir un serveur Windows
Démarrer le serveur pour la première fois
Lancer MySQL en ligne de commande
Lancer MySQL comme un service Windows
Faire fonctionner MySQL sous Windows
->MySQL pour Windows face à MySQL pour Unix

2.2.1.9 MySQL pour Windows face à MySQL pour Unix

MySQL pour Windows a prouvé qu'il était très stable. Cette version de MySQL a les mêmes fonctionnalités que la version Unix, a quelques exceptions :

    Windows 95 et les threads
    Windows 95 perd environs 200 octets de mémoire central lors de la création de chaque thread. Chaque connexion MySQL crée un nouveau thread, ce qui fait qu'il n'est pas recommandé d'exécuter mysqld pour des durées longues sur Windows 95 si votre serveur gère de nombreuses connexions. Les autres versions de Windows ne souffrent pas du même problème.
    Nombre limités de ports de connexions
    Les systèmes Windows disposent d'environs 4,000 pour les connexions clientes, et après connexion, cela prend de 2 à 4 minutes avant qu'un port soit de nouveau utilisable. Dans des situations où les clients se connectent et se déconnectent à haute vitesse, il est possible que tous les ports soient utilisés, avant que les anciens ports ne redeviennent utilisables. Lorsque cela arrive, le serveur semblera inaccessible, même s'il fonctionne bien. Notez que des ports peuvent aussi être utilisées par d'autres applications, ce qui réduit encore le nombre de ports disponibles pour MySQL.
    Lectures concurrentes
    MySQL dépends des fonctions pread() et pwrite() pour être capable de mêler des INSERT et des SELECT . Actuellement, nous utilisons les mutexes pour émuler les fonctions pread() / pwrite() . Nous allons, à long terme, remplacer ce niveau d'interface par une interface virtuelle de façon à ce que nous puissions utiliser l'interface readfile() / writefile() de Windows NT/2000/XP pour gagner de la vitesse. L'implémentation courante limite le nombre de fichiers ouverts par MySQL à 1024, ce qui signifie que vous ne pouvez pas utiliser d'aussi nombreux threads concurrents sur Windows NT/2000/XP que sur Unix.
    Blocking read
    MySQL utilise une lecture bloquée pour chaque connexion. Cela signifie que :
      Une connexion ne sera pas déconnectée automatiquement après 8 heures d'inactivité, comme c'est le cas sous Unix.
      Si une connexion se bloque, il est impossible de la détruire sans tuer MySQL.
      mysqladmin kill ne fonctionne pas sur une connexion endormie.
      mysqladmin shutdown ne peut pas s'exécuter tant qu'il y a des connexions qui dorment.
    Nous envisageons de corriger ce problème, lorsque les développeurs Windows auront fourni un palliatif.
    DROP DATABASE
    Vous ne pouvez pas détruire une base qui est utilisée par un autre thread.
    Interrompre MySQL depuis le gestionnaire de tâches
    Vous ne pouvez pas tuer MySQL depuis le gestionnaire de tâche ou avec un utilitaire d'extinction de Windows 95. Vous devez l'éteindre avec mysqladmin shutdown .
    Noms sensibles à la casse
    Les noms de fichiers sont insensibles à la casse sous Windows, ce qui fait que les noms de tables et de bases ne sont pas sensibles à la casse pour MySQL sur Windows. La seule restriction est que les noms de tables et de bases doivent être donnés avec même casse dans le nom (tout en majuscules, ou en minuscules). Identifier Case Sensitivity .
    Le caractère '\'
    Les composants d'un chemin sont séparés par le caractère '\' sous Windows, qui est aussi le caractère de protection de MySQL. Si vous utilisez la commande LOAD DATA INFILE ou SELECT ... INTO OUTFILE , vous devez doubler le caractère '\' :
    
    mysql> LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
    Alternativement, vous pouvez utiliser les noms de fichiers au format Unix, avec le caractère '/' :
    
    mysql> LOAD DATA INFILE "C:/tmp/skr.txt" INTO TABLE skr;
    mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
    Problèmes avec les pipes
    Les pipes ne fonctionnent pas de manière fiables depuis la ligne de commande Windows. Si le pipe reçoit un caractère ^Z / CHAR(24) , Windows va croire qu'il atteind la fin du fichier et arrête le programme.C'est un problème, notamment lorsque vous essayez d'utiliser le log binaire de cette manière :
    
    mysqlbinlog binary-log-name | mysql --user=root
    
    Si vous rencontrez un problème lors de l'utilisation du log, et que vous pensez que c'est à cause du caractère ^Z / CHAR(24) , vous pouvez utiliser le palliatif suivant :
    
    mysqlbinlog binary-log-file --result-file=/tmp/bin.sql
    mysql --user=root --execute "source /tmp/bin.sql"
    Cette dernière commande peut aussi être utilisée pour lire fiablement tout fichier SQL qui contient des données binaires.
    L'erreur Can't open named pipe
    Si vous utilisez MySQL 3.22 sous NT avec les derniers clients mysql, vous allez obtenir cette erreur :
    
    error 2017: can't open named pipe to host: . pipe...
    
    Ceci est dû au fait que les versions modernes de MySQL utilisent des pipes nommés sous NT , par défaut. Pour éviter cette erreur, vous devez utiliser l'option --host=localhost sur les nouveaux clients, ou bien créer le fichier d'options C:\my.cnf , qui contiendra les informations suivantes :
    
    [client]
    host = localhost
    Depuis la version 3.23.50, les pipes nommés sont les seuls activés si mysqld est démarré avec --enable-named-pipe .
    Erreur Access denied for user
    Si vous rencontrez l'erreur Access denied for user: 'utilisateur@unknown' to database 'mysql' lors de l'accès au serveur MySQL sur la même machine, cela signifie que MySQL ne peut résoudre proprement votre nom d'hôte.

    Pour corriger cela, vous devriez créer un fichier \windows\hosts dans l'information suivante :

    
    127.0.0.1       localhost
    
    ALTER TABLE
    Lorsque vous exécutez la commande ALTER TABLE , la table est verrouillé, empêchant les autres threads d'y accéder. Cela est lié au fait que sous Windows, vous ne pouvez pas effacer un fichier qui est en cours d'utilisation par d'autres threads : à l'avenir, vous pourrions trouver un moyen de contourner ce problème.
    DROP TABLE
    La commande DROP TABLE sur une table qui est utilisée dans le cadre d'un MERGE ne fonctionne pas sous Windows, car le gestionnaire de MERGE garde la carte des tables cachée de la couche supérieure de MySQL. Comme Windows ne vous autorise pas à effacer des fichiers qui sont ouverts, vous devez d'abord vider de la mémoire toutes les tables du MERGE (avec la commande FLUSH TABLES ) puis effacer la table MERGE avant d'effacer les tables. Nous allons corriger cela lorsque nous introduirons la notion de VIEW s.
    DATA DIRECTORY et INDEX DIRECTORY
    Les directives DATA DIRECTORY et INDEX DIRECTORY de CREATE TABLE sont ignorées sous Windows, car Windows ne supporte pas les liens symboliques.
Voici quelques problèmes connus et pas encore corrigés, si jamais quelqu'un souhaite nous aider sur la version Windows :

  • Ajouter des icônes pour le démarrage et l'arrêt de MySQL, dans l'installateur.
  • Il serait vraiment pratique de pouvoir arrêter le processus mysqld depuis le gestionnaire de tâches. Pour le moment, il faut passer par mysqladmin shutdown .
  • Le port de readline sur Windows pour pouvoir l'utiliser avec l'outil de ligne de commande mysql .
  • Des versions graphiques des clients standards MySQL ( mysql , mysqlshow , mysqladmin et mysqldump ) seraient bien.
  • Il serait bien si les fonctions de lecture et d'écriture sur les sockets de net.c pouvaient être interrompues. Cela rendrait possible l'arrêt des threads en court avec mysqladmin kill sous Windows.
  • Ajouter des macros pour utiliser les méthodes rapides d'incrément/décrément compatibles avec les threads, fourni par Windows.

<< MySQL pour Windows face à MySQL pour Unix >>
Faire fonctionner MySQL sous Windows Installer MySQL sous Windows Installation standard rapide de MySQL