2015-09-09 3 views
0

Моя таблица имеет следующие столбцы:Postgres не использует значение с плавающей точкой по умолчанию

priority double precision DEFAULT 0.5::double precision, 
created_at timestamp without time zone DEFAULT now(), 

Но для записи, который был только что вставили значение равно нулю:

enter image description here

Почему не так Работа?

Update: Я обновил склянки-SQLAlchemy строку:

priority = db.Column(db.Float, server_default=u'0.5', nullable=False) 

и таблица показывает:

priority double precision NOT NULL DEFAULT 0.5::double precision,

, но теперь она дает ошибку:

sqlalchemy.exc.IntegrityError: (psycopg2.IntegrityError) null value in column "priority" violates not-null constraint

+0

Предположительно, ваш клиентский процесс явно отправил 'NULL'. Как вы делаете вставку? –

+1

Пожалуйста, покажите нам полный оператор 'Insert', который вы используете. И вы, вероятно, не хотите 'double', подробности см .: http://floating-point-gui.de/ –

ответ

0

В базе данных добавить NOT NULL ограничение столбца. Таким образом, вы заметите, когда клиент попытки вставить пустое значение:

priority double precision DEFAULT 0.5::double precision NOT NULL, 

В клиенте используется ключевым слово DEFAULT вместо нуля при выполнении вставки:

INSERT INTO your_table (priority, created) VALUES (DEFAULT, DEFAULT); 

См официальной документации для получения дополнительной информации: http://www.postgresql.org/docs/9.3/static/sql-insert.html

+0

Обновленный вопрос – Tjorriemorrie

+0

Да, вы можете увидеть сообщение об ошибке, потому что вы пытаетесь вставить нулевое значение. Теперь вам нужно настроить код, который вставляет (см. Мой ответ). Добавьте к вопросу код, отвечающий за INSERT –

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