avertissement :les données tronquées pour la colonne 'nom d'utilisateur' à la ligne 1 lors de l'utilisation de la base de données mysql avec django
Je suis le ci-dessus mentionné avertissement
données tronquées pour la colonne 'nom d'utilisateur' à la ligne 1
Je reçois pour mon modèle "suserprofile" avec "nom d'utilisateur" comme mon premier champ dans le modèle
J'ai vérifié max_length option qui n'est pas le problème pour moi,
si je change l'ordre de mes champs dans la mon modèle(changé "email_id" sur le terrain pour le premier sur la liste du modèle),puis je reçois l'alerte en remplaçant "nom d'utilisateur" avec n'importe quel domaine que j'ai mentionné en premier(dans ce cas email_id) dans le modèle.
Je ne reçois pas cet avertissement lors de l'exécution de syncdb mais l'obtention d'un avertissement uniquement quand je suis en train d'enregistrer un nouvel objet dans mon modèle("suserprofile") dans mon views.py fichier à l'aide de django en exécutant le navigateur local.
Je ne suis pas à comprendre pourquoi est-il passe
edit:
mon modèle:
class SUserProfile(models.Model):
email_id = models.EmailField(max_length=30)
username = models.CharField(max_length=50,blank=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
mon point de vue
from django.allauth.models import SocialAccount
def profileview(request):
user=request.user
if user.is_authenticated:
a=SocialAccount.objects.filter(user=user)
try:
f=a.get(provider='facebook')
except:
f=None
if f:
fusername=f.get_provider_account
fdata=f.extra_data
ffirst_name=fdata['first_name']
flast_name=fdata['last_name']
femail=fdata.get('email')
try:
old_user=SUserProfile.objects.get(email_id=femail)
except:
new_user=SUserProfile(
username=fusername,
email_id=femail,
first_name=ffirst_name,
last_name=flast_name,)
new_user.save()
avertissement détails, que je reçois lors de l'exécution du navigateur:
Exception Type: Warning
Exception Value: Data truncated for column 'email_id' at row 1
Exception Location:/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in _warning_check, line 92
Traceback Switch to copy-and-paste view
usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py in get_response
response = callback(request, *callback_args, **callback_kwargs)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/contrib/auth/decorators.py in _wrapped_view
return view_func(request, *args, **kwargs)
...
▶ Local vars
/home/varun/webops/mysite/allauth/account/views.py in profileview
new_user.save()
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/base.py in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py in _insert
return insert_query(self.model, objs, fields, **kwargs)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/query.py in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py in execute_sql
cursor.execute(sql, params)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/backends/util.py in execute
return self.cursor.execute(sql, params)
...
▶ Local vars
/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py in execute
return self.cursor.execute(query, args)
...
▶ Local vars
/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in execute
if not self._defer_warnings: self._warning_check()
...
▶ Local vars
/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py in _warning_check
warn(w[-1], self.Warning, 3)
...
▶ Local vars
makemigrations
et migrate
! Sinon, votre base de données sera encore à l'ancien schéma et vous vous demanderez, pourquoi ça ne marche pas. Je parle d'expérience ici 😀
OriginalL'auteur user2323800 | 2013-06-18
Vous devez vous connecter pour publier un commentaire.
vérifier le format de colonne et de la longueur.
j'ai eu la même erreur lors de l'insertion de données de chaîne avec 20 caractères dans la colonne de type varchar avec 10 de longueur.
OriginalL'auteur warungman
syncDB ne va pas remplacer la version existante de la table/colonne définitions. Donc, si vous avez déjà vérifié pour s'assurer que la longueur de votre fichier sont corrects, vous voudrez peut-être vérifier que vous avez refait vos tables, vous devez supprimer et recréer dans l'ordre pour la mise à jour des définitions de colonne à mettre en place (j'ai fait cette erreur une couple de fois moi-même)
OriginalL'auteur ShanG