Odoo 如何用 db init 初始化第一个数据库并用 start 命令启动本地服务完成首次运行
2026/9/13 4:49:09 网站建设 项目流程

Odoo 如何用 db init 初始化第一个数据库并用 start 命令启动本地服务完成首次运行

【免费下载链接】odooOdoo. Open Source Apps To Grow Your Business.项目地址: https://gitcode.com/GitHub_Trending/od/odoo

在 Odoo 代码仓库中完成一次"从零到可用"的首次运行,需要两步:先用db init子命令在 PostgreSQL 中创建并初始化一个数据库(安装最小必需的模块),再用start子命令以默认配置启动 Web 服务,最后通过浏览器访问确认登录成功。下面的操作路径适用于直接基于本仓库源码运行的场景,不涉及打包安装。

准备条件

  • 当前目录为 Odoo 源码根目录,其中 odoo-bin 是统一入口脚本,它导入odoo.cli并调用odoo.cli.main()分发dbstart等子命令。
  • Python 3 环境。依赖清单见 requirements.txt,其中包含psycopg2等 PostgreSQL 驱动,各依赖版本按 Ubuntu 24.04 与 Debian 12 官方版本对齐。安装依赖:
pip install -r requirements.txt
  • 一个可连接的 PostgreSQL 实例。db子命令会直接操作数据库服务器,需要时可传入-r/--db_user-w/--db_password--db_host--db_port--pg_path--db_sslmode等参数指定连接方式,不传则使用默认连接。

第一步:用 db init 创建并初始化数据库

在仓库根目录执行:

./odoo-bin db init demo

db init的作用是"Create and initialize a database":创建一个空数据库并安装最小必需的模块(minimum required modules)。demo是位置参数,即要创建的数据库名,可换成任意名称。

db init支持以下选项(来自 db 子命令定义):

参数默认值用途
database(位置参数)必填要创建的数据库名
--with-demo不启用在新数据库中安装演示数据
--languageen_US实例默认语言
--usernameadmin管理员用户名
--passwordadmin管理员密码
--country设置到主公司上的国家代码

如果想带演示数据并用指定语言初始化,可以写成:

./odoo-bin db init demo --with-demo --language en_US

如果初始化完成后还需要安装更多模块,按db init帮助文本的说明,使用module install命令,具体可用:

./odoo-bin module install --help

这一步的判断点

  • 目标库名已存在且未加--force时,命令会直接退出并输出:Target database <名称> exists, aborting.,同时提示可用--force删除已有库。
  • --force的副作用:它会先删除同名数据库再重新创建,库内数据不可恢复。确认该库可以丢弃后再使用。
  • 创建数据库失败时会以Could not create database \<名称>`. (...)` 的形式退出,括号内是底层报错原因,优先检查 PostgreSQL 是否可用、连接参数是否正确。

第二步:用 start 命令启动本地服务

数据库就绪后,在仓库根目录执行:

./odoo-bin start -d demo

start的定位是"Quickly start the odoo server with default options",即以默认选项快速启动服务(见 start 子命令定义)。它的行为有几点需要知道:

  • -d/--database:指定数据库名。不传时默认取当前项目目录名,因此如果你用db init demo建库,这里就必须显式传-d demo,否则启动的不是刚建好的库。
  • --path:模块目录,默认为.。当前目录下各子文件夹里发现了模块清单时,start会自动追加--addons-path指向该目录;在 virtualenv 中运行时,--path默认取 virtualenv 路径而非当前目录。
  • start还会自动追加一个--db-filter,把请求限定到本次指定的库名。
  • 边界说明:如果指定的数据库尚不存在,start会自动创建一个空库并只安装base模块后启动。这是可跳过db init的替代路径,但按本文主路径执行时,库已由db init初始化完成,启动时不会再触发该行为。

验证首次运行

Odoo Web 服务的默认 HTTP 端口为 8069(见 tools/config.py 中--http-port的默认值)。服务启动后:

  1. 浏览器访问http://localhost:8069
  2. 选择数据库demo,使用db init时设定的凭据登录——默认即admin/admin(未传--username/--password时);
  3. 登录成功进入工作台,说明数据库初始化与服务启动均已完成。

排查与限制

  • 连不上数据库dbstart都接受-c/--config指向配置文件(参考仓库中 debian/odoo.conf 展示的db_hostdb_userdb_password等配置项),也可以直接在命令行传入--db_host--db_port-r-w等参数。
  • 端口不是 8069 时start透传服务参数,可用--http-port覆盖默认端口后再验证访问地址。
  • 重新初始化:删除已存在的库只能依赖--force(连带删除 filestore 数据),或者先手工处理该库;db init本身不会对已存在的库做覆盖。
  • db init只安装最小模块集,其余业务模块需要通过module install另行安装,这不属于首次运行的必做步骤。

完成以上三步后,你就有了一个由db init初始化的数据库和一个以默认配置运行的本地 Odoo 实例,后续所有验证都以http://localhost:8069的管理员登录结果为准。

【免费下载链接】odooOdoo. Open Source Apps To Grow Your Business.项目地址: https://gitcode.com/GitHub_Trending/od/odoo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询