web-dev-qa-db-fra.com

Comment mettre à jour la définition de champ de id de int en varchar dans la structure de la table #_users

Je crée une application autonome et un serveur central, tous deux utilisent un schéma de base de données commun. Le serveur central est connecté et géré avec joomla3.x UX.

Étant donné que tous les utilisateurs peuvent s'inscrire via une application autonome hors ligne et que leur connectivité Internet augmente, les données sont synchronisées. Donc, pour supprimer la redondance des données, je crée un user_id unique en tant que varchar. Mais joomla #_user table la prend comme id int auto-incrémentée.

1
Amit Singh

C’est en fait une question purement MySQL qui devrait s’intituler "Comment modifier une colonne MySQL". Il n'y a rien de différent ou de spécial si la base de données est utilisée pour un site Joomla.

Il suffit donc d’une instruction SQL comme ci-dessous pour obtenir une réponse à cette partie de la question:

ALTER TABLE `YOUR_DATABASE`.`#__users` 
CHANGE COLUMN `id` `id` VARCHAR(50) NOT NULL ;

Sur une autre note, bien sûr, rien dans Joomla ne permet de modifier ses schémas de base de données.

Aussi ce n'est pas recommandé. Modifier les schémas de base de données d'une autre application que vous ne contrôlez pas et que vous dépendez de ses mises à jour, etc. n'a pas de sens. Les mises à jour futures peuvent remplacer ces modifications.

De plus, je n'ai pas examiné le code de création de l'utilisateur, mais il est très probable que les identifiants dépendent uniquement de la fonction d'incrémentation automatique de MySQL. Si vous désactivez cette option, vous pouvez vous exposer à des problèmes et à des dysfonctionnements.

Pour être honnête avec votre question, je ne comprends pas ce que vous essayez de faire et les raisons pour lesquelles vous voulez changer le #__users.id colonne.

Mais puisque l'autre application est en cours de construction par vous, pourquoi ne réglez-vous pas le champ ID de votre application?

2
FFrewin