openstore / schema-core
Openstore 核心模式
Requires
- php: ^7.1
- doctrine/common: ^2.10
- doctrine/data-fixtures: ^1.2.2
- doctrine/dbal: ^2.9.2
- doctrine/orm: ^2.6.3
- gedmo/doctrine-extensions: ^2.4.36
- symfony/console: ~3.0|~4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.14
- jdorn/sql-formatter: ^1.2.17
- phpstan/phpstan: ^0.11
- phpstan/phpstan-doctrine: ^0.11
- phpstan/phpstan-phpunit: ^0.11
- phpstan/phpstan-strict-rules: ^0.11
- phpunit/phpunit: ^7.5.3
README
openstore-schema-core 为 openstore 项目提供基本数据库模式。它包含大约 80 张表,专门用于处理在线目录。
免责声明:这是一个正在进行中的工作!
警告:openstore-schema-core 项目依赖于 doctrine2 以便于模式生成。尚未进行任何工作来使实体通过 doctrine 有用,因为 openstore 使用
zend-db
进行数据库访问。换句话说,模式生成工作良好,但如果需要使用 doctrine 进行数据访问,则还有工作要做(修复关系命名,制作存储库...)。
要求
- PHP 7.1+
- MySQL 或 MariaDB 带有 InnoDB
特性
安装
克隆项目
$ git clone https://github.com/belgattitude/openstore-schema-core.git
或者,您可以通过 composer 安装项目 composer require openstore/schema-core
设置
配置
复制 分发配置文件 并编辑您的数据库参数
$ cp ./config/openstore-schema-core.config.php.dist ./config/openstore-schema-core.config.php
# Edit database parameters
$ vi ./config/openstore-schema-core.config.php
数据库
首先确保您的数据库服务器受支持,并启用对 utf8mb4
字符集的支持。
注意:要使用
utf8mb4
,请检查以下参数是否存在于 mysql 配置文件(my.cnf
)中
innodb_file_per_table=1
innodb_file_format=barracuda
(MariaDb 10.2.2+ 的默认值,在 10.3 中已删除)innodb_large_prefix=1
(MariaDb 10.2.2+ 的默认值,在 10.3 中已删除)
然后创建一个新的数据库
$ mysql -e "CREATE DATABASE openstore_test CHARACTER SET='utf8mb4' COLLATE='utf8mb4_unicode_ci';" -u {USER} -p
命令
您可以通过执行以下命令列出已注册的命令
$ ./bin/openstore-schema-core
实际上,使用以下命令
注意:使用
--dump-sql
选项显示 DDL,而不是将其应用于数据库。这在显示生产数据库中所需的迁移时特别有用,例如$ ./bin/openstore-schema-core openstore:schema:update --dump-sql将显示必须在 当前 数据库上应用的迁移。
常见问题解答
注意:下面描述的备份和恢复方案尚未在实际生产中使用。请确保您知道自己在做什么。
备份数据库
使用 mysqldump
,最好将 schema
(DDL)和 data
(插入)分别备份到不同的文件中,这允许在全新的数据库上恢复数据。例如
# 1. Backup of the schema (ddl: create tabes, routines...) $ mysqldump -u {USER} -p --no-data --triggers --events --routines --default-character-set=utf8mb4 {DATABASE} > /{PATH}/{DATABASE}.schema.sql # 2. Backup of the data (sql: inserts) $ mysqldump -u {USER} -p --no-create-info --skip-triggers --complete-insert --disable-keys --default-character-set=utf8mb4 --lock-tables {DATABASE} > /{PATH}/{DATABASE}.data.sql
在新创建的方案上恢复数据
首先使用上述方法执行 mysqldump
备份,然后创建一个新的方案
# 1. Generate the latest openstore schema $ ./bin/openstore-schema-core openstore:schema:create --dump-sql > /{PATH}/openstore.schema.sql # 2. Create a new database that will hold it $ mysql -e "create database {NEW_DATABASE} CHARSET='utf8mb4' COLLATE='utf8mb4_unicode_ci'" -u{USER} -p # 3. Apply the latest generated schema on your newly created database $ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/openstore.schema.sql # 4. Restore the 'data' backup of your old database in the new database. $ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/{BACKUP_FILE}.data.sql
移动/重命名数据库
在将数据库恢复到新方案后,您可能想移动/重命名它。
对于开发或小型数据库,您可以使用 mysqldump
# 1. Create the new database (a new empty one) $ mysql -e "create database {NEW_DATABASE} CHARSET='utf8mb4' COLLATE='utf8mb4_unicode_ci'" -u{USER} -p # 2. Complete backup of your database $ mysqldump -u {USER} -p --routines --events --triggers --default-character-set=utf8mb4 {DATABASE} > /{PATH}/{DATABASE}.all.sql # 3. Restore the complete backup in the new database $ mysql -u {USER} -p {NEW_DATABASE} < /{PATH}/{DATABASE}.all.sql
您还可以(Unix)将最后两个命令通过管道连接
未来
- 开始处理存储库。
- 文档表和约定。
- 将 doctrine validate 添加到 CI 中(修复错误的关系名称)。
注释
Unicode
从版本 0.40.0 开始,openstore-schema-core
默认使用 utf8mb4
字符集。
如果您无法设置MySQL服务器变量(例如在持续集成服务器上...),您可以回退到生成的兼容性脚本。
压缩表
可选的,为了减少磁盘使用,您可以更改以下表的压缩格式
ALTER TABLE product_translation ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; ALTER TABLE product_category_translation ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; ALTER TABLE sale_order_line ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; ALTER TABLE sale_order ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
贡献
欢迎贡献,克隆仓库并提交拉取请求。
对贡献者的提示
确保在提交前执行代码风格检查
$ composer cs-check
您还可以自动修复代码风格问题
$ composer cs-fix
别忘了重新生成sql文档
$ composer build