2010-02-14 2 views
1

Я разработал приложение ROR с использованием MySQL и теперь хочу, чтобы вместо него использовался Postgres.База данных Rails от MySQL до Postgres

Я использовал Navicat для передачи данных MySQL в Postgres и обновил базу данных.yml с настройками среды Postgres.

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

RuntimeError: ERROR C23502 Mnull value in column "id" violates not-null constraint FexecMain.c L2229 RExecConstraints: INSERT INTO "users

Спасибо

ответ

2

Похоже, вы имели столбец AUTO_INCREMENT id в вашем MySQL база данных. Это стандартная функция, отличная от ANSI, поэтому она не обязательно будет работать в других базах данных.

Чтобы сделать то же самое в Postgres, вы можете использовать тип столбца SERIAL (или эквивалентную явную последовательность SEQUENCE).

+0

Как исправить это, это что-то в коде, который мне нужно изменить, или в базе данных, или и то, и другое? Спасибо – RewbieNewbie

+0

Это сработало: Пользователи ALTER TABLE ALTER COLUMN id set DEFAULT NEXTVAL ('users_id_seq') – RewbieNewbie

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