2017-07-19 2 views
0

J'ai actuellement installé la version MySQL 5.6 installée sur mon système local. Je veux définir définitivement la variable système group_concat_max_length à une certaine valeur. Lorsque je le fais en utilisant la commande set global group_concat_max_len = 100000; dans le terminal mysql, la valeur est définie mais la valeur change par défaut au redémarrage. J'ai également changé le fichier my.cnf et le mettre sous [mysqld] en-tête.La variable système group_concat_max_length n'a pas été modifiée même après avoir changé le fichier my.cnf

Quelqu'un peut-il suggérer quel pourrait être le problème?

Edit: my.cnf

 

    # 
    # The MySQL database server configuration file. 
    # 
    # You can copy this to one of: 
    # - "/etc/mysql/my.cnf" to set global options, 
    # - "~/.my.cnf" to set user-specific options. 
    # 
    # One can use all long options that the program supports. 
    # Run program with --help to get a list of available options and with 
    # --print-defaults to see which it would actually understand and use. 
    # 
    # For explanations see 
    # http://dev.mysql.com/doc/mysql/en/server-system-variables.html 

    # This will be passed to all mysql clients 
    # It has been reported that passwords should be enclosed with ticks/quotes 
    # escpecially if they contain "#" chars... 
    # Remember to edit /etc/mysql/debian.cnf when changing the socket location. 
    [client] 
    port  = 3306 
    socket  = /var/run/mysqld/mysqld.sock 

    # Here is entries for some specific programs 
    # The following values assume you have at least 32M ram 

    # This was formally known as [safe_mysqld]. Both versions are currently parsed. 
    [mysqld_safe] 
    socket  = /var/run/mysqld/mysqld.sock 
    nice  = 0 

    [mysqld] 
    # 
    # * Basic Settings 
    # 
    user  = mysql 
    pid-file = /var/run/mysqld/mysqld.pid 
    socket  = /var/run/mysqld/mysqld.sock 
    port  = 3306 
    basedir  = /usr 
    datadir  = /var/lib/mysql 
    tmpdir  = /tmp 
    lc-messages-dir = /usr/share/mysql 
    skip-external-locking 
    # 
    # Instead of skip-networking the default is now to listen only on 
    # localhost which is more compatible and is not less secure. 
    # bind-address  = 127.0.0.1 


    #max_connections=200 (mysql connections) 
    # 
    # * Fine Tuning 
    # 
    key_buffer  = 16M 
    max_allowed_packet = 16M 
    thread_stack  = 192K 
    thread_cache_size  = 8 
    # This replaces the startup script and checks MyISAM tables if needed 
    # the first time they are touched 
    myisam-recover   = BACKUP 
    #max_connections  = 100 
    #table_cache   = 64 
    #thread_concurrency  = 10 
    # 
    # * Query Cache Configuration 
    # 

    innodb_buffer_pool_size = 8G 
    innodb_flush_log_at_trx_commit = 2 
    query_cache_size=268435456 
    query_cache_type=1 
    query_cache_limit=8388608 
    group_concat_max_len=100000 

    #query_cache_limit = 1M 
    #query_cache_size  = 16M 

    # 
    # * Logging and Replication 
    # 
    # Both location gets rotated by the cronjob. 
    # Be aware that this log type is a performance killer. 
    # As of 5.1 you can enable the log at runtime! 
    #general_log_file  = /var/log/mysql/mysql.log 
    #general_log    = 1 
    # 
    # Error log - should be very few entries. 
    # 
    log_error = /var/log/mysql/error.log 
    # 
    # Here you can see queries with especially long duration 
    #log_slow_queries = /var/log/mysql/mysql-slow.log 
    #long_query_time = 2 
    #log-queries-not-using-indexes 
    # 
    # The following can be used as easy to replay backup logs or for replication. 
    # note: if you are setting up a replication slave, see README.Debian about 
    #  other settings you may need to change. 
    #server-id  = 1 
    #log_bin   = /var/log/mysql/mysql-bin.log 
    expire_logs_days = 10 
    max_binlog_size   = 100M 
    #binlog_do_db  = include_database_name 
    #binlog_ignore_db = include_database_name 
    # 
    # * InnoDB 
    # 
    # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. 
    # Read the manual for more InnoDB related options. There are many! 
    # 
    # * Security Features 
    # 
    # Read the manual, too, if you want chroot! 
    # chroot = /var/lib/mysql/ 
    # 
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca". 
    # 
    # ssl-ca=/etc/mysql/cacert.pem 
    # ssl-cert=/etc/mysql/server-cert.pem 
    # ssl-key=/etc/mysql/server-key.pem 



    [mysqldump] 
    quick 
    quote-names 
    max_allowed_packet = 16M 

    [mysql] 
    #no-auto-rehash # faster start of mysql but no tab completition 

    [isamchk] 
    key_buffer  = 16M 

    # 
    # * IMPORTANT: Additional settings that can override those from this file! 
    # The files must end with '.cnf', otherwise they'll be ignored. 
    # 
    !includedir /etc/mysql/conf.d/ 

fichier mysql dans /etc/init.d/

 

    ... 
    SELF=$(cd $(dirname $0); pwd -P)/$(basename $0) 
    CONF=/etc/mysql/my.cnf 
    MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" 

    # priority can be overriden and "-s" adds output to stderr 
    ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i" 
    ... 

Après le redémarrage de MySQL:

 

    mysql> show variables like '%group_concat_max%'; 
    +----------------------+-------+ 
    | Variable_name  | Value | 
    +----------------------+-------+ 
    | group_concat_max_len | 1024 | 
    +----------------------+-------+ 
    1 row in set (0.00 sec) 

+0

Vous avez probablement mal tapé my.cnf. Pouvez-vous vérifier les journaux mysql pour voir s'il y a quelque chose à ce sujet? Et s'il vous plaît collez votre my.cnf ici. Où est exactement votre my.cnf? – abeyaz

+0

@abeyaz est dans/etc/mysql/dossier. –

+0

Si vous êtes sûr qu'il retourne à la valeur par défaut même si vous avez 100000 dans le fichier my.cnf, mysql ne verra probablement pas votre fichier my.cnf dans ce répertoire. Pouvez-vous vérifier '/ etc/init.d/mysql' si vous utilisez la distribution basée debian/ubuntu, il y aura l'emplacement de my.cnf là – abeyaz

Répondre

0

La seule ligne de votre le fichier de configuration DOIT être listé comme 6 lignes car l'initialisation ne peut traiter qu'une seule variable par ligne, A mon humble avis.

Vous trouverez probablement que la taille de votre cache de requête d'environ 268M et query_cache_limit d'environ 8M serait plus efficace à 50M et 1M respectivement. La raison étant lorsqu'une ligne est modifiée dans une table, chaque résultat de requête mis en cache pour la table mise à jour est marqué comme invalide - c.-à-d. Que les cycles cpu sont consommés pour marquer les résultats de cache individuellement. Après le redémarrage, veuillez confirmer AFFICHER LES VARIABLES GLOBALES COMME 'group_concat_max_length' a votre valeur prévue. Cela devrait être visible.

+0

Il s'agissait d'un problème d'indentation lors du collage du fichier my.cnf qui conduisait à l'initialisation comme s'il s'agissait d'une seule ligne. J'ai édité mon post maintenant. merci –

+0

le problème n'est toujours pas résolu –