我正在尝试一个phoenix项目(source),但是在设置DB时遇到了麻烦。
当我运行mix ecto.setup
时,我得到这个错误:(Postgrex.Error) ERROR 42501 (insufficient_privilege): permission denied to create extension "citext...
我知道有一个几乎完全一样SO thread问类似的问题,但该职位没有答案。
我去了psql
并运行了CREATE EXTENSION citext;
,但我仍然有同样的问题。
有人能告诉我正确的位置吗?这样我就可以设置正确的用户权限,以便成功运行mix ecto.setup
。
我正在运行Phoenix1.3.2版和长生不老药1.6.2版。
我也有另一个可以成功运行mix ecto.setup
的phoenix项目。我在下面列出了config/dev.exs的一部分以供比较。
在rumbl/config/dev.exs内部(成功)
# Configure your database
config :rumbl, Rumbl.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "rumbl_dev",
hostname: "localhost",
pool_size: 10
在mango/config/dev.exs内部(错误)
# Configure your database
config :mango, Mango.Repo,
adapter: Ecto.Adapters.Postgres,
username: "postgres",
password: "postgres",
database: "mango_dev",
hostname: "localhost",
pool_size: 10
2条答案
按热度按时间pdsfdshx1#
您必须以超级用户身份连接才能安装扩展
citext
。原因是此扩展创建了C函数,并且仅限于超级用户。
qpgpyjmq2#
想出了解决办法。我想这是劳伦茨的答案和我修修补补的结合。
我转到
psql
并列出了所有用户\l
,发现我的用户名iggy
被列为所有者我执行了
psql -U iggy
并运行了CREATE EXTENSION citext;
我在
dev.exs
中更改了username
:然后我运行了
mix ecto.setup
,瞧!它运行得很完美。这有点奇怪,因为我的另一个项目有完全相同的dev.exs
配置,我的用户名列为postgres
(它在那里工作),而只有iggy
在这里工作。