Storage Backends
Run on YAML, SQLite, or MySQL/MariaDB, and migrate between them live.
AT-ShoppingMall stores plot data in one of three backends. YAML is the default and needs no setup. SQLite and MySQL/MariaDB are for larger servers or shared-database setups.
The backend is chosen by the type: key in plugins/AT-ShoppingMall/storage.yml:
type: YAMLThe default. No database, no setup: plot data lives in flat files.
type: SQLITE
sqlite:
file: shoppingmall.dbOne fast local database file. Great for a single server with many plots.
type: MYSQL
mysql:
host: localhost
port: 3306
database: shoppingmall
username: root
password: ""
properties: "useSSL=false&allowPublicKeyRetrieval=true"
table-prefix: "sm_"A shared database, for multiple servers or existing MySQL/MariaDB infra.
Database drivers (SQLite/MySQL) are downloaded on first start, so the server needs internet access the first time you enable them.
Choosing a backend
| Backend | Best for |
|---|---|
| YAML | Single server, simplest setup. No external database. |
| SQLITE | Single server, many plots: one fast local database file. |
| MYSQL | Multiple servers sharing one database, or existing MySQL/MariaDB infra. |
The table-prefix lets several plugins (or several mall instances) share one database
without clashing.
Switching backends
You can switch two ways:
Edit + restart. Change type: in storage.yml and restart. On startup the plugin
detects the change and migrates your existing data automatically. Old YAML files are renamed
to *.bak.
Live migrate. Without a restart:
/sm migrate <yaml|sqlite|mysql> [confirm]- Run it once to preview (e.g.
/sm migrate mysql), and it reports the source and target. - Run again with
confirmto perform the copy:/sm migrate mysql confirm. - You can't migrate to the backend you're already using.
Migration copies all plot data, including auto-renew preferences. Back up your
plugins/AT-ShoppingMall/ folder before migrating a live server, just in case.
Notes
- Plot block snapshots (the reset presets) are stored as binary files under
snapshots/, regardless of backend. - The required tables are created automatically, no manual SQL needed.