Open haruka-7 opened 6 years ago
Post the composer's output composer install --working-dir=/scripts
(inside the container), please.
Hi,
Thanks for your help. Docker is something new for me, sorry if I misunderstand something.
I run composer install --working-dir=/scripts
in flarum container with this output :
[RuntimeException]
Invalid working directory specified, /scripts does not exist.
To do that I first run :
sudo docker-compose up -d
Then
sudo docker exec -i -t flarum sh
And
composer install --working-dir=/scripts
I fixed the build error and php dependencies.
composer install --working-dir=/scripts
[INFO] Install migration script dependencies
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- intervention/image 2.4.2 requires ext-fileinfo * -> the requested PHP extension fileinfo is missing from your system.
Can you retry ?
Solved ! Thank you very much !
@P3ter can you give us a feedback of your migration?
Yes of course. I try to migrate this forum : http://forum.pluxml.org. For the moment I have this error :
[03-Nov-2018 10:42:14 UTC] [INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[03-Nov-2018 10:42:14 UTC] [INFO] Connected successfully to the databases !
[03-Nov-2018 10:42:14 UTC] [INFO] #############################
[03-Nov-2018 10:42:14 UTC] [INFO] ### [1/9] Users migration ###
[03-Nov-2018 10:42:14 UTC] [INFO] #############################
[03-Nov-2018 10:42:14 UTC] [INFO] Migrating 15864 users...
[03-Nov-2018 10:42:14 UTC] [WARN] User 'Invité' cleaned (incorrect format). New nickname : 'Invite'
[03-Nov-2018 10:42:15 UTC] [WARN] User '.matt' cleaned (incorrect format). New nickname : 'matt'
[03-Nov-2018 10:42:15 UTC] [WARN] User 'Beno@' cleaned (incorrect format). New nickname : 'Benoat'
[03-Nov-2018 10:42:15 UTC] [WARN] User 'w0k.' cleaned (incorrect format). New nickname : 'w0k'
[03-Nov-2018 10:42:15 UTC] [WARN] User '[Chris]' cleaned (incorrect format). New nickname : 'Chris'
[03-Nov-2018 10:42:15 UTC] [ERROR] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'chris' for key 'users_username_unique' in /scripts/function.php:44
Stack trace:
#0 /scripts/function.php(44): PDOStatement->execute(Array)
#1 /scripts/importer/users.php(103): RunPreparedQuery(Object(PDO), Array, 'INSERT INTO use...')
#2 /scripts/migrate.php(68): require('/scripts/import...')
#3 {main}
The username "[Chris]" is renamed "Chris", but a username "chris" already exist.
Je pense qu'on peut parler français. Content d'aider le staff de PluXml :)
Il faudrait ajouter une vérification à chaque fois que le script est obligé de renommer un pseudo, si il existe déjà, le script l'ignore et passe au suivant. Pour le forum de mondedie.fr, les doublons on a géré ça au cas par cas parce qu'il y en avait pas beaucoup.
Merci à vous d'être si réactif :-)
La fonctionnalité que tu décris n'existe pas déjà ? Je pose la question car je viens d'avoir l'erreur : [ERROR] Unable to clean username 'dj stark91', try to fix this account manually. Proposed nickname : 'djstark91' (already exists in fluxbb database)
A priori j'ai aussi un problème de doublons d'adresse mail : [ERROR] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'gcyrillus@free.fr' for key 'users_email_unique' in /scripts/function.php:44
Ah oui effectivement, j'avais oublié ça, faut dire que ça remonte à 2 ans.
Dans la requête SQL j'avais mis WHERE BINARY
, donc la recherche est faite en prenant en compte la casse. Le script génère le pseudo Chris
et dans la bdd de fluxbb c'est chris
donc le check passe, par contre ensuite le base de donnée renvoie une violation de contrainte parce que son check interne lui n'est pas sensible à la casse.
J'ai retiré le mot clé BINARY
de la requête pour qu'elle ne soit plus sensible à la casse, ça devrait être bon maintenant.
Par contre pour l'adresse mail, il y a pas grand chose à faire, c'est forcément du multi compte donc là, à votre staff de voir ce que vous devez faire dans ce cas là.
Je viens de tester ça semble fonctionner : [ERROR] Unable to clean username '[Chris]', try to fix this account manually. Proposed nickname : 'Chris' (already exists in fluxbb database)
En revanche, j'ai eu les messages ci-dessous (sans que ça bloque la migration) :
[WARN] User 'Сергiй' cleaned (incorrect format). New nickname : 'Sergiy'
Deprecated: idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated in /scripts/vendor/s9e/text-formatter/src/Parser/BuiltInFilters.php on line 175
Deprecated: idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated in /scripts/vendor/s9e/text-formatter/src/Parser/BuiltInFilters.php on line 175
[ERROR] Unable to clean username 'Valérian', try to fix this account manually. Proposed nickname : 'Valerian' (already exists in fluxbb database)
Pour les mails, si je supprime les lignes qui font l'INSERT dans la table pun_users, ça va poser problème pour la suite de la migration ?
Pour les messages idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated
, c'est pas très grave, la version de la librairie s9e/text-formatter
date d'août 2016, donc certaines choses ont été dépréciées dans PHP depuis.
Je te conseil d'ignorer ces messages, et lorsque la migration sera terminée et fonctionnelle, tu pourras tester avec la dernière version en modifiant le fichier composer.json
.
https://github.com/mondediefr/fluxbb_to_flarum/blob/master/scripts/composer.json
Faudrait faire la même chose pour les autres librairies aussi.
https://github.com/s9e/TextFormatter https://github.com/Intervention/image https://github.com/illuminate/support https://github.com/cocur/slugify https://github.com/PHPMailer/PHPMailer
Pour les mails, si je supprimer les lignes qui font l'INSERT dans la table pun_users, ça va poser problème pour la suite de la migration ?
Non, je pense pas.
Bonjour,
J'avance bien, mais pour info j'ai eu une nouvelle erreur :
[INFO] ###################################
[INFO] ### [5/9] User groups migration ###
[INFO] ###################################
[INFO] Migrating 4 user groups...
[INFO] + Group 'Administrateurs' done
[INFO] + Group 'Modérateurs' done
[ERROR] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name_singular' cannot be null in /scripts/function.php:44
Stack trace:
#0 /scripts/function.php(44): PDOStatement->execute(Array)
#1 /scripts/importer/groups.php(54): RunPreparedQuery(Object(PDO), Array, 'INSERT INTO gro...')
#2 /scripts/migrate.php(72): require('/scripts/import...')
#3 {main}
/!\ An error occurred while executing the prepared query%
L'extrait concerné dans le dump fluxBB :
INSERT INTO `pun_groups` (`g_id`, `g_title`, `g_user_title`, `g_promote_min_posts`, `g_promote_next_group`, `g _moderator`, `g_mod_edit_users`, `g_mod_rename_users`, `g_mod_change_passwords`, `g_mod_ban_users`, `g_read_bo ard`, `g_view_users`, `g_post_replies`, `g_post_topics`, `g_edit_posts`, `g_delete_posts`, `g_delete_topics`, `g_post_links`, `g_set_title`, `g_search`, `g_search_users`, `g_send_email`, `g_post_flood`, `g_search_flood`, `g_email_flood`, `g_report_flood`) VALUES
(1, 'Administrateurs', 'Administrateur', 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0),
(2, 'Modérateurs', 'Pluxml Staff', 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0),
(3, 'Invités', NULL, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0),
(4, 'Membres', NULL, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 60, 30, 60, 60);
J'ai résolu le problème en remplaçant la valeur NULL par la valeur de l'ID. C'est peut-être quelque chose qui peut-être prévu par le script.
Suite à ça, le script de migration c'est entièrement terminée avec succès (en 10 min 29 sec).
Ok je vais tester ça ce weekend avec l'ancienne bdd de mondedie Je vais mettre tout ça à jour.
Finalement j'ai peut-être toujours un soucis au niveau du remplacement des pseudos par le script, exemple :
[ERROR] Unable to clean username 'Sébastien', try to fix this account manually. Proposed nickname : 'Sebastien' (already exists in fluxbb database)
Après vérification je n'ai pas de "Sebastien" dans le dump, j'ai uniquement un "Sébastien".
J'ai remarqué que j'avais le même problème sur tous les username qui comportent des accents (Régis, Stéphane, Gasbé, Aurélien, Gégé, etc).
voilà c'est pour ça que l'on avait mis BINARY dans la requête. Je vais réfléchir à une solution avec @hardware
@P3ter peux-tu tester avec cette requête
SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username collate utf8_bin
?
ici : https://github.com/mondediefr/fluxbb_to_flarum/blob/master/scripts/importer/users.php#L34
Si ça fonctionne pas, faut trouver un charset autre que utf8_bin
qui est pas sensible à la casse mais qui est sensible aux accents lors des comparaisons.
J'ai modifié la ligne ainsi :
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username collate utf8_bin");
Et j'ai obtenu l'erreur :
[WARN] User '[Chris]' cleaned (incorrect format). New nickname : 'Chris'
[ERROR] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'chris' for key 'users_username_unique' in /scripts/function.php:44
Stack trace:
#0 /scripts/function.php(44): PDOStatement->execute(Array)
#1 /scripts/importer/users.php(103): RunPreparedQuery(Object(PDO), Array, 'INSERT INTO use...')
#2 /scripts/migrate.php(68): require('/scripts/import...')
#3 {main}
J'ai effectivement dans mon dump un user "[Chris]" et un autre user "chris", mais pas de user "Chris". En revanche ça corrige mon problème avec les accents dans les username !
Oui mais ça du coup c'est normal.
On est obligé de changer les pseudos puisqu'il faut qu'il soit compatible "url" si je peux me permettre. Donc on slugify les pseudos. https://github.com/mondediefr/fluxbb_to_flarum/blob/master/scripts/importer/users.php#L30-L33
Alors quand on a le user Chris
et un autre user chris
on est un peu bloqué.
Comme le username doit être unique cf code flarum mysql n'accepte pas. Chris et chris pour lui c'est la même chose, donc on se retrouve avec cette erreur Integrity constraint violation: 1062 Duplicate entry 'chris' for key 'users_username_unique'
J'ai pas de solution élégante sous la main, comme là dit plus haut @hardware nous sur notre forum on a géré ce problème au cas par cas. Mais pour un gros forum il faudrait sans doute trouver une solution...
Ok je vais regarder pour traiter ces cas manuellement, merci pour votre aide. La petite nouveauté du jour : j'ai essayé de lancer une migration avec des avatars et j'ai obtenu l'erreur ci-dessous :
Deprecated: parse_str(): Calling parse_str() without the result argument is deprecated in /scripts/migrate.php on line 24
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[INFO] #############################
[INFO] ### [1/9] Users migration ###
[INFO] #############################
[INFO] Migrating 15820 users...
[WARN] User 'Invité' cleaned (incorrect format). New nickname : 'Invite'
[WARN] User '.matt' cleaned (incorrect format). New nickname : 'matt'
Fatal error: Uncaught BadMethodCallException: Method Illuminate\Support\Str::quickRandom does not exist. in /scripts/vendor/illuminate/support/Traits/Macroable.php:76
Stack trace:
#0 /scripts/importer/users.php(66): Illuminate\Support\Str::__callStatic('quickRandom', Array)
#1 /scripts/migrate.php(68): require('/scripts/import...')
#2 {main}
thrown in /scripts/vendor/illuminate/support/Traits/Macroable.php on line 76
Pour les avatars ok je prend note, je fix ça bientôt.
Hello, Je viens aux nouvelles au sujet de mon problème avec les avatars. Une idée d'où ça pourrait venir ?
Tu peux tester le dernier commit? https://github.com/mondediefr/fluxbb_to_flarum/commit/d41b78ab7e67f6d2ddfb0ce792ab258fe1da4439 Normalement ça devrait fonctionner.
J'ai testé après avoir mis à jour master en local (j'ai bien le commit en question), mais j'ai obtenu l'erreur ci-dessous :
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[INFO] #############################
[INFO] ### [1/9] Users migration ###
[INFO] #############################
[INFO] Migrating 1756 users...
[WARN] User 'Invité' cleaned (incorrect format). New nickname : 'Invite'
[WARN] User '.matt' cleaned (incorrect format). New nickname : 'matt'
Fatal error: Uncaught Error: Call to undefined method Intervention\Image\Image::make() in /scripts/importer/users.php:68
Stack trace:
#0 /scripts/migrate.php(68): require()
#1 {main}
thrown in /scripts/importer/users.php on line 68
@P3ter j'ai fait un fix, peux-tu tester? (docker ne fonctionne plus chez moi 😅 ) J'ai aussi fait un fix pour cette erreur ici Normalement il va juste ignorer chris, au lieu de faire planter le script.
ps: j'ai pas testé, j'ai juste poussé les changements sur la branch
ahah :-)
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[INFO] #############################
[INFO] ### [1/9] Users migration ###
[INFO] #############################
[INFO] Migrating 1756 users...
[ERROR] PDOException: SQLSTATE[42000]: Syntax error or access violation: 1253 COLLATION 'utf8_bin' is not valid for CHARACTER SET 'binary' in /scripts/function.php:43
Stack trace:
#0 /scripts/function.php(43): PDOStatement->execute(Array)
#1 /scripts/importer/users.php(37): RunPreparedQuery(Object(PDO), Array, 'SELECT id FROM ...')
#2 /scripts/migrate.php(68): require('/scripts/import...')
#3 {main}
Pareil c'est un fix que j'ai pas testé. edit: on va finir par réussir 😅
;-)
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[INFO] #############################
[INFO] ### [1/9] Users migration ###
[INFO] #############################
[INFO] Migrating 1756 users...
[ERROR] PDOException: SQLSTATE[42000]: Syntax error or access violation: 1253 COLLATION 'utf8mb4_bin' is not valid for CHARACTER SET 'binary' in /scripts/function.php:43
Stack trace:
#0 /scripts/function.php(43): PDOStatement->execute(Array)
#1 /scripts/importer/users.php(37): RunPreparedQuery(Object(PDO), Array, 'SELECT id FROM ...')
#2 /scripts/migrate.php(68): require('/scripts/import...')
#3 {main}
pourtant quand tu avais testé ça fonctionné cette requête sql non? ton message ici https://github.com/mondediefr/fluxbb_to_flarum/issues/4#issuecomment-436070066
t'avais mis ça dans le fichier user.php
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username collate utf8_bin");
Les fichiers sont à jour du reprository (branche master, sans aucune modification). J'ai ré-essayé avec cette requête mais ça ne passe plus...
Si je reviens sur ce commit : 4663646, requête ci-dessous :
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE BINARY username = :username");
Je retombe sur l'erreur : https://github.com/mondediefr/fluxbb_to_flarum/issues/4#issuecomment-436781426 et je n'ai plus l'erreur "utf8".
En revanche, si je reviens sur le dernier commit présent sur master et que je test avec la requête ci-dessus ça ne passe plus :
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[INFO] #############################
[INFO] ### [1/9] Users migration ###
[INFO] #############################
[INFO] Migrating 1756 users...
[WARN] User 'Invité' cleaned (incorrect format). New nickname : ''
[ERROR] PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'username' cannot be null in /scripts/function.php:43
Stack trace:
#0 /scripts/function.php(43): PDOStatement->execute(Array)
#1 /scripts/importer/users.php(107): RunPreparedQuery(Object(PDO), Array, 'INSERT INTO use...')
#2 /scripts/migrate.php(68): require('/scripts/import...')
#3 {main}
/!\ An error occurred while executing the prepared query%
Ah ok, je regarde ça. ça devrait pas être trop compliqué.
@P3ter tu peux retenter?
Ensuite pour la requête, peux-tu tester différentes requête avec le dernier commit?
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username collate utf8_bin");
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username collate utf8mb4_bin");
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE username = :username COLLATE utf8mb4_bin");
$query = RunPreparedQuery($dbFluxbb, [':username' => $username], "SELECT id FROM {$dbFluxbbPrefix}users WHERE BINARY username = :username");
Désolé tu es un peu mon cobaye là 😅
Hello,
Désolé tu es un peu mon cobaye là
Il y a pas de soucis, on va y arriver ! :-D
En lançant docker pour faire le test (sudo docker-compose up -d
) il a téléchargé une nouvelle image de flarum :
WARNING: The PWD variable is not set. Defaulting to a blank string.
Pulling flarum (mondedie/docker-flarum:0.1.0-beta.7.2-stable)...
0.1.0-beta.7.2-stable: Pulling from mondedie/docker-flarum
4fe2ade4980c: Already exists
10ba59942995: Pull complete
5f1d64e5f1c9: Pull complete
e056887c4a95: Pull complete
Digest: sha256:52707f08e4cfad19aead7122996216c7f9cc0cbeacbf41a108ba84b0bc8b4e27
Status: Downloaded newer image for mondedie/docker-flarum:0.1.0-beta.7.2-stable
Recreating mariadb ... done
Recreating flarum ... done
Recreating nginx ... done
Et depuis j'ai une nouvelle erreur quand je lance la migration :
[INFO] ------------------- STARTING MIGRATION PROCESS -------------------
[INFO] Connected successfully to the databases !
[ERROR] PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'flarum.users' doesn't exist in /scripts/function.php:31
Stack trace:
#0 /scripts/function.php(31): PDO->query('TRUNCATE TABLE ...')
#1 /scripts/migrate.php(58): RunQuery(Object(PDO), 'TRUNCATE TABLE ...')
#2 {main}
/!\ An error occurred while executing the query%
Alors il faut installer flarum sur http://flarum.local
Retour à la case départ... N'arrivant plus à accéder à http://flarum.local, j'ai décider de tout reprendre du début. Mais sans succès jusqu'à ce que je réussisse à contourner cette erreur :
sudo docker-compose config
WARNING: The PWD variable is not set. Defaulting to a blank string.
Qui bloquait le lancement de l'image nginx, en modifiant docker-compose.yml
et en remplaçant "$PWD" par "."
J'ai finalement réussi à installer Flarum, mais désormais je n'arrive plus à faire l'init.
sudo ./run init
[INFO] Install migration script dependencies
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package phpmailer/phpmailer 5.2 exists as phpmailer/phpmailer[6.0.x-dev, dev-5.2-stable, dev-6.0-ical, dev-master, v5.2.10, v5.2.11, v5.2.12, v5.2.13, v5.2.14, v5.2.15, v5.2.16, v5.2.17, v5.2.18, v5.2.19, v5.2.2, v5.2.20, v5.2.21, v5.2.22, v5.2.23, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.4, v5.2.5, v5.2.6, v5.2.7, v5.2.8, v5.2.9, v6.0.0, v6.0.0rc1, v6.0.0rc2, v6.0.0rc3, v6.0.0rc4, v6.0.0rc5, v6.0.1, v6.0.2, v6.0.3, v6.0.4, v6.0.5, v6.0.6] but these are rejected by your constraint.
[INFO] Creation of the default TextFormatter bundle
PHP Warning: require(vendor/autoload.php): failed to open stream: No such file or directory in /scripts/createCustomBundle.php on line 3
PHP Fatal error: require(): Failed opening required 'vendor/autoload.php' (include_path='.:/usr/share/php7') in /scripts/createCustomBundle.php on line 3
J'ai fix mon problème docker sur mon pc, je vais pouvoir refaire des tests en local. Je regarde ça en fin de semaine :)
Hello, Je viens aux news pour savoir si tu avais eu le temps de regarder ?
Non désolé, j'ai pas eu le temps les derniers jours. D'ailleurs la beta 8 de flarum va sortir très très bientôt.
Il faudra de toute manière mettre le script à jour.
la beta 8 est sortie. Je suis entrain de mettre à jour l’image doker. Le temps de faire des tests ça va trainer un peu. J’espère que la migration n’est pas pressée 🙂
OK impeccable. Idéalement, je voudrais migrer avant 2019, mais j'attendrai le temps qu'il faut ;-)
Hello, bonne année 2019 ! Est-ce que vous avez du nouveau pour moi ? :-)
@P3ter désolé pour le retard, je fais ça ce weekend.
Hello, During the
./run build
, I have this error :ln: /usr/bin/php: File exists
. I'm under Fedora and got the same on Ubuntu.It's seems to be OK, after deleting the line
&& ln -s /usr/bin/php7 /usr/bin/php \
in the Dockerfile. But during the./run init
I have the error :