Commande "npm init directus-project my_project" n'aboutit pas?! Résolu :)

Bonjour à tous,Suite au cours Créer une app connectée avec SwiftUI avec Directus, très motivé,
je suis repartis du cours Directus de Maxime, et entrepris la construction d’un nouveau serveur chez Hostinger. Tout a fonctionné nickel jusqu’à la phase de création d’un projet Directus?!

  1. Node pour info :
root@JMZ4905:~# nvm install --lts
Installing latest LTS version.
Downloading and installing node v16.17.1...
Downloading https://nodejs.org/dist/v16.17.1/node-v16.17.1-linux-x64.tar.xz...
########################################################################################################### 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v16.17.1 (npm v8.15.0)
Creating default alias: default -> lts/* (-> v16.17.1)
root@JMZ4905:~# npm
npm <command>
Usage:
npm install        install all the dependencies in your project
npm install <foo>  add the <foo> dependency to your project
npm test           run this project's tests
  1. La base pour info :
MariaDB [(none)]> grant all privileges on directus_db_project_01.* to 'jmz_db_user'@'localhost' IDENTIFIED BY 'my_db_password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
+------------------------+
| Database               |
+-------------------------------+
| directus_db_project_01 |
| information_schema      |
| mysql                             |
| performance_schema    |
+-------------------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> SELECT User FROM mysql.user;
+-------------+
| User        |
+------------------+
| jmz_db_user  |
| root                |
+------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]> exit
Bye

Et voilà le problème :

root@JMZ4905:~# 
root@JMZ4905:~# rm -r directus_project_01
(remove de toutes précédentes tentatives)
root@JMZ4905:~# ls
root@JMZ4905:~# npm init directus-project directus_project_01
? Choose your database client MySQL / MariaDB / Aurora
? Database Host: 127.0.0.1
? Port: 3306
? Database Name: directus_db_project_01
? Database User: jmz_db_user
? Database Password: ******************

**Something went wrong while seeding the database:**

**[ER_PARSE_ERROR] create table `directus_collections` (`collection` varchar(64) not null, `icon` varchar(30), `note` text, `display_template` varchar(255), `hidden` boolean not null default '0', `singleton` boolean not null default '0', `translations` json, `archive_field` varchar(64), `archive_app_filter` boolean not null default '1', `archive_value` varchar(255), `unarchive_value` varchar(255), `sort_field` varchar(64), primary key (`collection`)) - ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'json, `archive_field` varchar(64), `archive_app_filter` boolean not null default' at line 1**

**Please try again**

J’ai reconstruis le serveur depuis zéro plusieurs fois, mais cette erreur ER_PARSE_ERROR: semble provenir d’un code en arrière plan d’installation. Est-ce que les versions ne s’aiment entre-elles? Je suis up-to-date de tous les composants mis en jeu.

archive_app_filter boolean not null default’ at line 1**, mais oussque se trouve ce code?

Voilà, c’est peut-être évident, mais je ne vois pas?!. Alors, à vot’ bon coeur, Amis ambulanciers du code :grinning:

PS : Je suis en root tout le temps , contrairement aux conseils insistants du cours, et ce, pour tenter d’évacuer toutes complications de droits. Ne crie pas Maxime :joy:

Salut @jmz

De ce que je vois, ça me fait penser à un problème de version MariaDB.
Quelle version est installée sur ton serveur?
Directus réclame la version 10.2.7 minimum de mariaDB et informe que les versions inférieures ne sont pas supportées.

Je commencerai par regarder de ce côté là, perso.

Bonjour Mrt1, merci pour ta réponse.

Toutefois, c’est exactement ce que je fais et refais, avec diverses approches :

root@JMZ4905:~# npm init directus-project directus_project_01

Et c’est cette seule commande à exécuter, issue de la doc Installing from CLI | Directus Docs et du cours de Maxime qui génère le problème détaillé dans mon précédent post.
J’ai testé de long en large, avec noms longs, courts, sans chiffres, etc … Le diable pouvant se cacher dans les détails.
C’est bien parce que bloque en ayant épuisé mes propres tentatives que je fais appel à la communauté. Je vais trouver, comme toujours, mais si je peux aller plus vite et surtout recevoir de l’info complémentaire utile à tous, je prends.

PS : Je réfléchie sur les versions de Ubuntu, je suis sous la version :

root@JMZ4905:~# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.6 LTS
Release:	18.04
Codename:	bionic

Est-ce que les commandes « apt update » et « apt upgrade » rattrapent les évolutions de la La version LTS actuelle 20.04 , sortie en avril 2020 ?

Commence par vérifier la version de MariaDB avec la commande suivante :

mariadb --version

Et dis nous ce que cela te retourne.

Pour upgrader Ubuntu en version 20.04 LTS, il fait passer par une dist-upgrade avec la commande suivante :

sudo do-release-upgrade -d

Mais je ne pense pas que cela soit nécessaire dans ton cas.

Non, ces commandes mettent à jour la liste des paquets, puis met les paquets à jour ensuite. Mais ça ne concerne que la version sur laquelle ton Ubuntu tourne. (La version des paquets sera celle pour la 18.04 dans ton cas).

Réponse :

Server version: 10.1.48-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04

La doc exige : MariaDB [2] 10.2.7+

Là pourrait se situer le problème ?!

Exactement.
Je t’ai trouvé un article en ligne pour que tu puisses mettre à jour MariaDB.

Une fois MariaDB à jour, je pense que ce sera OK. L’erreur initiale est ‹ typique › d’un problème de version de DB.

[Edit] : Surtout quand on lit ça sur la doc directus :

Older versions may work, but aren’t officially supported. Use at your own risk.

Hello Mrt1,

Regarde !

Ça veut dire que tu as trouvé la bonne et radicale solution. Bravo à toi et un grand merci.

Je ne peux qu’inviter Maxime pour t’offrir soit une réduction, un tee-shirt, un repas, une médaille sur le site, … enfin ce qu’il voudra :joy: :joy: :joy:

2 « J'aime »

Excellent ! :partying_face:
Super, bon code pour la suite :blush:

[Edit] normalement dans les options, tu peux mettre un onglet ‹ Résolu › ou ‹ Solution › sur le post en question. Ce qui permet de mettre un lien vers la solution et de le marquer dans le forum. Merci :wink: