2015-12-02 4 views
-1

я успешно загрузил свой веб-приложение на webfaction, но я заметил, при использовании PeeWee для подключения к базе данных MySQL на моем webfaction счете, я получил эту ошибку:Как подключиться к базе данных MySQL в WebFaction с помощью Peewee ORM?

ProgrammingError: (1146, "Table 'TABLEGOESHERE' doesn't exist") 

Точная ошибка в файле журнала ошибок ниже

Некоторые справочная информация:

  • Я создал базу данных MySQL на webfaction

  • Я не создавал никаких таблиц в панели управления, предоставляемой службой. Это совершенно пусто.

  • Я могу запустить мое приложение для флэров через терминал, но я собираюсь сделать его живым на веб-сервере, и поэтому я очень новичок в этом процессе.

Я предположил, что, когда вы используете Peewee вы можете создавать таблицы из вашей программы, как так:

models.py

# -- Peewe Modules 
from peewee import * 

DATABASE = MySQLDatabase("DBNAMEGOESHERE", host="HOSTGOESHERE", port=PORTGOESHERE, user="USERGOESHERE", passwd="PASSGOESHERE") 

# -- DATABASE OBJECTS GO HERE: 

#-- INIT 
def initialize(): 
    DATABASE.connect() 
    DATABASE.create_tables([Post, etc...],safe=True) 
    DATABASE.close() 

Функция инициализации вызывается в __init__.py файл в нижней части файла:

if __name__ == "__main__": 
    models.initialize() 
    try: 
     models.User.create_user(
      username = 'user', 
      email = 'email', 
      password = 'pass', 
      is_admin = True, 
      confirmed = True, 
      confirmed_on = datetime.datetime.now(), 
     ) 
    except ValueError: 
     pass 
    app.run() 

мой взгляд индекс, который направляет к («/»), в моем __init__.py файл делает вызов метода подсчета, как так:

count = models.Post.select().count() 

И я считаю, что это линия вызвала мой сайт для отображения внутренняя ошибка сервера 500, который в результате этого журнал регистрации ошибок (Timestamps были удалены для простоты):

return self.wsgi_app(environ, start_response) 

File "/home/username/webapps/myapp/myapp/__init__.py", line 49, in __call__ 
return self.app(environ, start_response) 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1820, in wsgi_app 
response = self.make_response(self.handle_exception(e)) 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1403, in handle_exception 
reraise(exc_type, exc_value, tb) 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1817, in wsgi_app 
response = self.full_dispatch_request() 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1477, in full_dispatch_request 
rv = self.handle_user_exception(e) 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1381, in handle_user_exception 
reraise(exc_type, exc_value, tb) 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1475, in full_dispatch_request 
rv = self.dispatch_request() 

File "/home/username/lib/python2.7/Flask-0.10.1-py2.7.egg/flask/app.py", line 1461, in dispatch_request 
return self.view_functions[rule.endpoint](**req.view_args) 

File "/home/username/webapps/myapp/myapp/__init__.py", line 587, in index 
count = models.Post.select().count() 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 2792, in count 
return self.aggregate(convert=False) or 0 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 2785, in aggregate 
return self._aggregate(aggregation).scalar(convert=convert) 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 2564, in scalar 
row = self._execute().fetchone() 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 2555, in _execute 
return self.database.execute_sql(sql, params, self.require_commit) 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 3366, in execute_sql 
self.commit() 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 3212, in __exit__ 
reraise(new_type, new_type(*exc_args), traceback) 

File "/home/username/lib/python2.7/peewee-2.7.3-py2.7.egg/peewee.py", line 3359, in execute_sql 
cursor.execute(sql, params or()) 

File "/usr/lib64/python2.7/site-packages/MySQLdb/cursors.py", line 174, in execute 
self.errorhandler(self, exc, value) 

File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler 
    raise errorclass, errorvalue 
ProgrammingError: (1146, "Table 'DATABASENAMEHERE.post' doesn't exist") 

Может кто-нибудь помочь мне определить и исправить эту проблему? Я не знаю, как заставить мое приложение флэша сотрудничать с моей базой MySQL в webfaction.

ответ

0

Перемещенный код инициализации моего сервера в файл, запускающий приложение Flask в Webfaction. Не рекомендуется размещать дополнительный код под условным обозначением, который предназначен для командной строки.

2

Уверены ли вы, что ваше приложение выполняется, выполняя его непосредственно из командной строки? то есть блок __name__ == '__main__' фактически работает? Возможно ли, что вы используете выделенный сервер WSGI?

+0

Привет, колледж, благодарю вас за ваш быстрый ответ. Я выполнял мой код инициализации под этим условным при тестировании своего приложения на своем терминале, прежде чем решил, что хочу сделать это вживую, когда я, наконец, закончу приложение. Я не знаю, как настроить приложение на реальном веб-сервере. Я считаю, что приложение не запускается в командной строке, я просто не знаю, что делать или с чего начать. Я буквально скопировал код разработки, который я тестировал на своем терминале (именно поэтому он может работать, как вы упомянули), и поместил его как приложение в webfaction. – Guled

+0

Не могли бы вы мне помочь в этом процессе. Что мне делать? – Guled