使用Phoenix创建REST API执行mix ecto.migrate时数据库连接失败
解决Phoenix框架执行
mix ecto.migrate时数据库不存在的错误 嘿,这个问题我之前搭建Phoenix项目时也踩过坑!报错提示database "api_example_dev" does not exist,本质是Phoenix的迁移命令需要依赖已存在的数据库,而你的PostgreSQL里还没创建这个开发库。下面给你两种实用的解决方式:
方式一:用Phoenix自带命令一键创建数据库
Phoenix提供了专门的数据库创建命令,完全不用手动操作PostgreSQL命令行,直接在项目根目录执行:
mix ecto.create
这个命令会自动读取你config/dev.exs里的数据库配置,帮你创建对应的开发数据库(如果是测试环境,就加参数mix ecto.create --env test)。创建完成后再跑迁移:
mix ecto.migrate
基本就能顺利执行了。
方式二:手动进入PostgreSQL创建数据库
如果你想手动操作确认细节,也可以按以下步骤来:
- 打开终端,进入PostgreSQL命令行(默认用户是postgres的话):
psql -U postgres
如果你的Phoenix配置里用了其他用户名,把postgres换成对应的用户名即可。
2. 在psql交互环境里执行创建数据库的SQL命令:
CREATE DATABASE api_example_dev;
- 退出psql环境:
\q
- 回到项目根目录重新执行迁移命令:
mix ecto.migrate
额外注意点
- 先检查
config/dev.exs里的数据库配置段,确保database: "api_example_dev"是你要创建的库名,别配置错了。 - 如果执行
mix ecto.create时提示权限错误,大概率是你的PostgreSQL用户密码和配置里的不匹配,或者该用户没有创建数据库的权限,这时候要调整config/dev.exs里的username和password,或者给PostgreSQL用户赋对应权限。
内容的提问来源于stack exchange,提问作者Rafael Augusto
相关产品推荐
相关产品推荐

