2017-09-18 71 views
0

當我嘗試添加一個新的記錄到數據庫的web2py我得到這個錯誤我已經從不同的機器移動的倉庫,但我的所有文件相同web2py的錯誤」 <類的sqlite3.OperationalError'>沒有這樣的表格:申請

我以前的數據庫DAL連接參數如下:

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) 

這是給我user_auth沒有發現錯誤,所以我把它改爲這個按照官方的文檔:

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') 

它顯示/數據庫中的所有表,並在「Database_Administration」控制檯我試圖添加一個新的記錄我得到下面的錯誤。

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

在我的應用程序中沒有名爲「application」的表,所以它必須與app相關。請指教。

回答

3

轉到「applications/yourappname/databases」中的數據庫文件夾。刪除所有表,然後重新創建表。您必須從某處複製它,並且無法加載所有表格。設置migrate = True和fake_migrate_all = false。然後重新運行服務器並在web2py服務器面板中轉到您的應用程序。選擇「編輯」並轉到管理面板「模型」下的「數據庫管理」。你會得到在你自己的機器上重新創建的所有表格。如果這不是您從其他源複製的情況....仍然通過刪除所有表來執行以下操作。你一定會把它啓動並運行。

0

您已經創建了一個完全新的數據庫,但通過設置fake_migrate_all=True,您所做的web2py認爲所有的表都被創建,即使他們從來沒有人。相反,您應該最初離開migrate=True(默認),並且不要設置fake_migrate_all。在這種情況下,web2py將在第一次請求時創建表(之後,您可以禁用遷移,直到您需要進行其他更改)。

相關問題