2016-12-18 3 views
1

Я работаю над сервером linux, который размещен на сервере амазонок, и я полностью настроил сервер, и последнее, что я пытаюсь сделать, - это один из моих старых проектов, которые я создал на сервере, который находится в Flask Framework.не была выбрана схема для создания ... error

Я пытаюсь запустить файл python, который устанавливает мою базу данных, необходимые для запуска моего проекта.

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

(venv) g[email protected]:/var/www/catalog/catalog$ python setup_database.py 
Traceback (most recent call last): 
    File "setup_database.py", line 63, in <module> 
    Base.metadata.create_all(engine) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/schema.py", line 2848, in create_all 
    tables=tables) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1479, in _run_visitor 
    conn._run_visitor(visitorcallable, element, **kwargs) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1122, in _run_visitor 
    **kwargs).traverse_single(element) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single 
    return meth(obj, **kw) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/ddl.py", line 70, in visit_metadata 
    self.traverse_single(table, create_ok=True) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/sql/visitors.py", line 122, in traverse_single 
    return meth(obj, **kw) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/ddl.py", line 89, in visit_table 
    self.connection.execute(schema.CreateTable(table)) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 662, in execute 
    params) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 720, in _execute_ddl 
    compiled 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 874, in _execute_context 
    context) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception 
    exc_info 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/util/compat.py", line 196, in raise_from_cause 
    reraise(type(exception), exception, tb=exc_tb) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 867, in _execute_context 
    context) 
    File "/var/www/catalog/venv/local/lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 324, in do_execute 
    cursor.execute(statement, parameters) 
sqlalchemy.exc.ProgrammingError: (ProgrammingError) no schema has been selected to create in 
'\nCREATE TABLE users (\n\tid SERIAL NOT NULL, \n\tusername VARCHAR(100), \n\temail VARCHAR(225) NOT NULL, \n\tprofile_pic VARCHAR(225) NOT NULL, \n\tPRIMARY KEY (id)\n)\n\n' {} 

Я не знаю, почему я получаю эту ошибку.
команды я побежал, чтобы настроить PostgreSQL (если это должно иметь значение):

$ sudo apt-get install libpq-dev python-dev 
$ sudo apt-get install postgresql postgresql-contrib 
$ sudo su - postgres 
$ psql 
# CREATE USER catalog WITH PASSWORD 'sillypassword'; 
# ALTER USER catalog CREATEDB; 
# CREATE DATABASE catalog WITH OWNER catalog; 
# \c catalog 
# REVOKE ALL ON SCHEMA public FROM public; 
# GRANT ALL ON SCHEMA public TO catalog; 
# \q 
$ exit 

Как исправить эту проблему?

ответ

3
no schema has been selected to create in 

Вы получаете эту ошибку, когда ваша установка search_path не имеет действительный первую запись (обычно пустой). Postgres не знает, в какой схеме создать таблицу.

Исправьте настройки search_path или имена объектов, соответствующих критериям схемы (например: public.users). Но исправьте search_path в любой кейс.
Детали:

+0

я прочитал в комментариях, что кто-то только что вошел в 'СБРОС search_path'. было бы что-то liek, которое работает в моем случае –

+0

, так что в основном после прочтения страницы, которая была связана. я могу просто изменить разрешения, используя «ALTER DATABASE test SET search_path = blarg, public;» и заменить blarg на каталог. ot должен я запустить следующий код .. 'SET search_path = blarg, public;' и заменить каталог blarg .. –

+0

@Omar_Jandali: Это зависит от вашей среды. По умолчанию используется установка по умолчанию 'search_path' в' postgresql.conf' для всего кластера БД (и перезагрузка). Но если вам нужны индивидуальные настройки для пользователя/db/сочетание пользователя и db/сеанса и т. Д., Вам нужны настройки соответственно. Ваша проблема заключается в том, что у вас в настоящее время нет действительного 'search_path'. –

Смежные вопросы