2017-09-18 6 views
0

Lorsque j'essaie d'ajouter un nouvel enregistrement à la base de données Web2py, j'obtiens cette erreur: j'ai déplacé le référentiel à partir d'un autre ordinateur mais de tous mes fichiers sont les mêmesWeb2py Erreur "<classe 'sqlite3.OperationalError'> aucune table de ce type: application

Mes paramètres de connexion précédente base de données DAL sont les suivantes:.

from gluon.contrib.appconfig import AppConfig 
myconf = AppConfig(reload=True) 
if not request.env.web2py_runtime_gae: 
    db = DAL(myconf.get('db.'+myconf.get('db.mode')+'_uri'), 
       pool_size=myconf.get('db.pool_size'), 
       migrate=myconf.get('db.migrate'), 
       migrate_enabled=myconf.get('db.migrate_enabled'), 
       #fake_migrate_all=myconf.get('db.fake_migrate_all'), 
       fake_migrate_all=True, 
       check_reserved=['all']) 

else: 
    db = DAL('google:datastore+ndb') 
    session.connect(request, response, db=db) 

il me donnait user_auth erreur pas trouvé alors je l'ai changé dans ce en suivant les documents officiels:

from gluon.contrib.appconfig import AppConfig 
myconf = AppConfig(reload=True) 
if not request.env.web2py_runtime_gae: 
    db = DAL('sqlite://storage.sqlite', pool_size=1, check_reserved=['all'], migrate=False, fake_migrate_all=True) 
else: 
    db = DAL('google:datastore+ndb') 

Il montre toute la table dans/database et dans la console "Database_Administration" j'essaie d'ajouter un nouvel enregistrement Je reçois l'erreur ci-dessous.

Web2py Error" <class 'sqlite3.OperationalError'> no such table: application 

Il n'y a pas de table dans mon application nommée "application", donc il doit être lié à l'application. S'il vous plaît donnez votre avis.

Répondre

3

Accédez à votre dossier de base de données dans "applications/yourappname/databases". Supprimez toutes les tables, puis recréez les tables. Vous devez l'avoir copié de quelque part et ne pas avoir pu charger toutes les tables. Définissez migrate = True et fake_migrate_all = false. Puis réexécutez le serveur et accédez à votre application dans le panneau du serveur web2py. Sélectionnez "Modifier" et allez à "administration de la base de données" sous "Modèles" sur le panneau d'administration. Vous obtiendrez toutes les tables recréées sur votre propre machine. Si ce n'est pas le cas que vous avez copié à partir d'une autre source ... procédez toujours comme suit en supprimant toutes les tables. Vous allez sûrement le faire fonctionner.

0

Vous avez créé une base de données entièrement nouvelle, mais en définissant fake_migrate_all=True, vous avez fait en sorte que web2py pense que toutes les tables ont été créées même si elles ne l'ont jamais été. Au lieu de cela, vous devez d'abord laisser migrate=True (valeur par défaut) et ne pas définir fake_migrate_all. Dans ce cas, web2py créera les tables lors de la première requête (après cela, vous pourrez désactiver les migrations jusqu'à ce que vous ayez besoin de faire une autre modification).