2010-02-14 56 views
1

我开发了一个使用MySQL的ROR应用程序,现在希望它使用Postgres来代替。从MySQL到Postgres的Rails数据库

我用Navicat将MySQL数据库传输到Postgres,并用Postgres环境设置更新了database.yml。

当我运行RoR应用程序,并尝试登录或创建一个用户,我得到以下错误:

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

谢谢

回答

2

听起来你必须在你的MySQL的AUTO_INCREMENT id列数据库。这是一个非ANSI标准功能,所以它不一定适用于其他数据库。

要在Postgres上做同样的事情,你可以使用一个SERIAL列类型(或一个等价的显式SEQUENCE)。

+0

我该如何解决这个问题,是否需要更改代码或数据库中的代码?谢谢 – RewbieNewbie 2010-02-14 13:42:33

+0

这工作: ALTER TABLE users ALTER COLUMN id set DEFAULT NEXTVAL('users_id_seq') – RewbieNewbie 2010-02-14 14:25:58