You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Sharetribe Go生产环境时遭遇ActiveRecord::NoDatabaseError问题

解决Sharetribe Go生产环境启动时的Unknown database错误

核心问题

你执行rake db:create时默认操作的是development环境,而你启动的是production环境,所以sharetribe_production数据库根本没被创建。

分步解决方案

1. 明确指定生产环境创建数据库

执行以下命令,强制针对production环境创建数据库:

RAILS_ENV=production bundle exec rake db:create

如果你的Rails版本较新,也可以用rails命令:

RAILS_ENV=production bundle exec rails db:create

2. 手动验证数据库创建(如果命令执行无效果)

如果上面的命令没反应,直接登录MariaDB手动创建数据库,排除权限或配置问题:

  1. 登录MariaDB:
mysql -u root -p
  1. 输入你的密码(mypass)后,执行创建语句:
CREATE DATABASE sharetribe_production CHARACTER SET utf8;
  1. 执行SHOW DATABASES;确认数据库已存在,然后退出:EXIT;

3. 检查数据库用户权限

确保root用户拥有足够操作生产数据库的权限:

  • 登录MariaDB后,执行:
GRANT ALL PRIVILEGES ON sharetribe_production.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

4. 验证database.yml配置细节

你的production配置里有几个需要确认的点:

  • password: "mypass":如果密码没有特殊字符,可以去掉引号,避免解析问题;如果有特殊字符,保留引号即可。
  • 若MariaDB使用socket连接(而非TCP),可以添加socket路径(根据你的系统调整,常见路径是/var/run/mysqld/mysqld.sock或/var/lib/mysql/mysql.sock):
production:
    adapter: mysql2
    database: sharetribe_production
    encoding: utf8
    username: root
    password: mypass
    host: localhost
    socket: /var/run/mysqld/mysqld.sock

5. 完成数据库迁移并启动服务

数据库创建成功后,执行生产环境的迁移:

RAILS_ENV=production bundle exec rake db:migrate

然后重新启动服务器:

bundle exec rails server -e production

额外检查

  • 确认MariaDB服务正在运行:执行systemctl status mariadb(Systemd系统)或service mariadb status(SysVinit系统),若未运行则启动服务:systemctl start mariadb。

内容的提问来源于stack exchange,提问作者Mayan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 20:47:06