web-dev-qa-db-fra.com

Lors de l'importation de la base de données, une erreur est affichée.

J'importais la base de données de mon site Web sur un autre serveur, mais il affiche cette erreur dont je n'ai aucune idée:

J'ai essayé d'importer la base de données plusieurs fois mais j'ai échoué. J'ai également coché le champ 'Ajouter un tableau de suppression' qui apparaît lors de l'exportation du fichier de base de données, mais il n'a rien fait.

4
Rahul

Ce problème est dû au fait que votre serveur ne prend pas en charge le type de classement utf8mb4_unicode_520_ci.

Pour résoudre ce problème, vous devez convertir le classement de toutes les tables avec utf8mb4_unicode_520_ci en utf8_general_ci.

Si vous exportez via phpmyadmin, vous pouvez:

  1. Cliquez sur l'onglet "Exporter" pour la base de données

  2. Cliquez sur le bouton radio "Personnalisé".

  3. Allez dans la section intitulée "Options spécifiques au format" et modifiez le menu déroulant pour "Système de base de données ou ancien serveur MySQL pour optimiser la compatibilité de sortie avec:" de NONE à MYSQL40.

  4. Faites défiler vers le bas et cliquez sur "GO".

OR exécutez la requête suivante sur chacune des tables affectées:

ALTER TABLE myTable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci

UPDATE: Vous devez également remplacer dans votre fichier exporté SQL TYPE=MyISAM par ENGINE=MyISAM

6
Tunji

Pour certains, le classement utf8mb4_unicode_520_ci semble étrange, mais WordPress utilise ce classement lorsque cela est possible. Les autres collations sont les deuxièmes meilleures.

Notez cette ligne:

// _unicode_520_ est un meilleur classement, nous devrions l'utiliser quand il est disponible.

Quelques plugins vont créer des tables de classement utf8mb4_unicode_520_ci quoi qu'il arrive.

File: /var/www/html/test100.com/wp-includes/wp-db.php
761:    /**
762:     * Determines the best charset and collation to use given a charset and collation.
763:     *
764:     * For example, when able, utf8mb4 should be used instead of utf8.
765:     *
766:     * @since 4.6.0
767:     * @access public
768:     *
769:     * @param string $charset The character set to check.
770:     * @param string $collate The collation to check.
771:     * @return array The most appropriate character set and collation to use.
772:     */
773:    public function determine_charset( $charset, $collate ) {
774:        if ( ( $this->use_mysqli && ! ( $this->dbh instanceof mysqli ) ) || empty( $this->dbh ) ) {
775:            return compact( 'charset', 'collate' );
776:        }
777: 
778:        if ( 'utf8' === $charset && $this->has_cap( 'utf8mb4' ) ) {
779:            $charset = 'utf8mb4';
780:        }
781: 
782:        if ( 'utf8mb4' === $charset && ! $this->has_cap( 'utf8mb4' ) ) {
783:            $charset = 'utf8';
784:            $collate = str_replace( 'utf8mb4_', 'utf8_', $collate );
785:        }
786: 
787:        if ( 'utf8mb4' === $charset ) {
788:            // _general_ is outdated, so we can upgrade it to _unicode_, instead.
789:            if ( ! $collate || 'utf8_general_ci' === $collate ) {
790:                $collate = 'utf8mb4_unicode_ci';
791:            } else {
792:                $collate = str_replace( 'utf8_', 'utf8mb4_', $collate );
793:            }
794:        }
795: 
796:        // _unicode_520_ is a better collation, we should use that when it's available.
797:        if ( $this->has_cap( 'utf8mb4_520' ) && 'utf8mb4_unicode_ci' === $collate ) {
798:            $collate = 'utf8mb4_unicode_520_ci';
799:        }
800: 
801:        return compact( 'charset', 'collate' );
802:    }

Le classement utf8mb4_unicode_520_ci (algorithme de classement Unicode 5.2.0, octobre 2010) constitue une amélioration par rapport à utf8mb4_unicode_ci (UCA 4.0.0, novembre 2003).

Il n'y a pas de mot sur le moment où MySQL prendra en charge les UCA ultérieurs.

La toute dernière UCA est 9.0.0 http://www.unicode.org/reports/tr10/, mais MySQL ne la supporte pas.

2
prosti