postgresql Elixir Postgres在运行混合ECTO.setup时出现错误42501?

ajsxfq5m  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(2)|浏览(125)

我正在尝试一个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

我有问题的项目的回购可以找到here。这里是另一个Phoenix项目我没有问题,也许它会有帮助:here

pdsfdshx

pdsfdshx1#

您必须以超级用户身份连接才能安装扩展citext
原因是此扩展创建了C函数,并且仅限于超级用户。

qpgpyjmq

qpgpyjmq2#

想出了解决办法。我想这是劳伦茨的答案和我修修补补的结合。
我转到psql并列出了所有用户\l,发现我的用户名iggy被列为所有者

...
iggy                            | iggy     | UTF8     | en_US.UTF-8 | en_US.UTF-8 
...

我执行了psql -U iggy并运行了CREATE EXTENSION citext;
我在dev.exs中更改了username

config :mango, Mango.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "iggy",
  password: "postgres",
  database: "mango_dev",
  hostname: "localhost",
  pool_size: 10

然后我运行了mix ecto.setup,瞧!它运行得很完美。这有点奇怪,因为我的另一个项目有完全相同的dev.exs配置,我的用户名列为postgres(它在那里工作),而只有iggy在这里工作。

相关问题