Je rencontre un soucis pour importer en local une BDD exportée d'un serveur dédié distant (fichier SQL). Serveur distant : PHP Version 5.3.3, Mysql : 5.1.73, phpMyAdmin : 4.0.10.11 En local avec Wamp Server 2.5 : PHP 5.5.12, Mysql : 5.6.17, phpMyAdmin : 4.1.14
Lorsque j'importe la bdd en local, il m'est indiqué une erreur de syntaxe un coup à une ligne, un coup à une autre ligne, et après vérif il n'y a aucune erreur de syntaxe à l'endroit indiqué 'proche du symbole <', d'ailleurs dans la ligne il n'y a pas ce symbole !
J'ai bien sur tenter plusieurs exports en SQL, pour tenter de réimporter, réinstaller Wamp en local, etc ... toujours pareil.
Est-ce que cela pourrait venir des différences de versions entre distant et local php/mysql/phpmyadmin ? Ou la version de Wamp qui n'est pas bonne ? laquelle faudrait-il dans ce cas de figure ???
Exemple de la dernière fausse erreur, il semblerait qu'il y ait un problème d'encodage :
Code : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '7?? G?QhA?Тr??F???Iu?aPl???-֚ 04lΚ?G??#??P??(vԄ??l??ml??ʇD?n' at line 1002
Je précise que les lignes d'avant sont du même type, et mysql ne s'est pas arrêté en erreur dessus ! ... Si il y a erreur de ligne, une recherche d'une partie de la chaîne retournée en erreur est inexistante dans la totalité du fichier SQL ... oO
- Export avec PhpMyAdmin 4.0.10.11 en choisissant bien utf-8 comme "Jeu de caractères du fichier" ? - Le fichier exporté est bien codé utf-8 ? Pour le voir, utilisez l'éditeur de texte Notepad++ et ouvrir le fichier SQL. Dans la barre d'état, en bas, à drtoite, il doit être indiqué "UTF-8"
- Export effectué sans mode de compatibilité pour une version MySQL < 5
Ici : Procédures PhpMyAdmin il est noté comment effectuer les exports avec PhpMyAdmin pour les différentes versions : Avant 3.4.0 - de 3.4.0 à avant 4.0.0 - 4.0.0 et +.
(pour info, le serveur distant utilise Suhosin ... ) je ne sais pas si ça peut être à l'origine d'erreurs ... toujours est-il que le fichier SQL créé semble correct et lisible dans notepad++ ...
ANSI as UTF8 est pour les « vieilles » versions de Notepad++. La dernière version est la 6.8.3
Dans le début de votre fichier sql, avez-vous des lignes du genre :
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;
Ayant vu que ça 'butait' sur une table en question, j'ai réussi à importer toutes les autres d'un coup ... je vais importer la table à problème par petit bout ! Merci à vous !
C'est une base prestashop, et la table en question est la table ps_connections qui n'est pas si énorme que ça (<200Mo) ...
Le fichier d'export SQL entier avec ces tables est lisible et correct dans notepad++. A l'import ça bloque et me renvoie des chaines d'erreurs fausses. En enlevant ps_connections, ps_connections_source et ps_connection_page, ça passe. Pourquoi ? mystère.
La particularité de ces tables : contiennent des urls du type :: [www.google.fr]
Mais je comprends pas le problème. Et si je tente un import seul de ces trois table, pareil, re-blocage.
-- phpMyAdmin SQL Dump -- version 4.0.10.11 -- [www.phpmyadmin.net] -- -- Client: localhost -- Généré le: Sam 31 Octobre 2015 à 10:17 -- Version du serveur: 5.1.73-1 -- Version de PHP: 5.3.3-7+squeeze18
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */;
-- -- Structure de la table `ps_connections` --
CREATE TABLE IF NOT EXISTS `ps_connections` ( `id_connections` int(10) unsigned NOT NULL AUTO_INCREMENT, `id_guest` int(10) unsigned NOT NULL, `id_page` int(10) unsigned NOT NULL, `ip_address` int(11) DEFAULT NULL, `date_add` datetime NOT NULL, `http_referer` varchar(255) DEFAULT NULL, PRIMARY KEY (`id_connections`), KEY `id_guest` (`id_guest`), KEY `date_add` (`date_add`), KEY `id_page` (`id_page`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1654488 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Les url/uri/referer peuvent faire jusqu'à 2083 caractères. Or les champs sont varchar(255) et l'url que vous avez donné en exemple a été tronquée à 256 caractères.
1) d'après ce que j'ai vu, vous utilisez le jeu de caractères UTF-8. Assurez-vous que votre base de données est bien dans ce jeu de caractères. Pour l'export, choisissez aussi ce même jeu de caractères --> phpmyadmin.
Ne pas utilisez le jeu utf8mb4 qui est sur quatre octets alors que utf8 n'est que sur trois octets.
2) ajoutez dans le paramétrage de phpmyadmin, les : --> drop database --> drop table --> truncate
3) ce que je ne comprends pas, ce sont les insert sur des urls. Ceux-ci sont très très long et vous tentez de les insérer dans un varchar(255). N'avez-vous dans votre table, une troncature de ces urls ?
Pour résoudre cela, vous pouvez modifiez vos colonnes en remplaçant varchar(255) par un text, voire même un longtext si cela est nécessaire.
L'url que vous donnez en exemple fait 258 caractères de long (???). En regardant de plus près, il semble qu'elle a été tronqué.
@+
---------------------------------------------------------------------------------------------------------------------------------------------------------------- Mon site : [www.jcz.fr]