This section covers the core database management commands in SyndrDB: creating new databases, renaming existing databases, and switching the active database context.
Creates a new database in the SyndrDB system.
CREATE DATABASE "database_name"
| Component | Description | Required |
|---|---|---|
| database_name | Name of the database to create | Yes |
Database names must follow these rules:
_) and hyphens (-)-- Simple database name
CREATE DATABASE "MyApp"
-- Database with underscores
CREATE DATABASE "my_application_db"
-- Database with hyphens
CREATE DATABASE "app-production"
-- Alphanumeric with version
CREATE DATABASE "AppV2"
-- Cannot start with number
CREATE DATABASE "2024_app" -- Error!
-- Cannot contain spaces
CREATE DATABASE "My App" -- Error!
-- Must use quotes
CREATE DATABASE MyApp -- Error! (quotes required)
Admin| Error | Cause | Solution |
|---|---|---|
database already exists |
Database with that name exists | Use a different name or drop existing database |
invalid database name |
Name violates naming rules | Follow naming rules (start with letter, alphanumeric + _ -) |
catalog registration failed |
Database created but not registered | Check system catalog integrity |
DO:
DON'T:
_ and --- Create a new application database
CREATE DATABASE "user_management_system"
-- Response: Database 'user_management_system' created successfully.
-- Attempt to create duplicate (will fail)
CREATE DATABASE "user_management_system"
-- Error: database 'user_management_system' already exists
-- Create environment-specific databases
CREATE DATABASE "analytics-dev"
CREATE DATABASE "analytics-staging"
CREATE DATABASE "analytics-prod"
Renames an existing database, updating all references, file paths, and active sessions.
-- Basic rename (fails if active sessions exist)
RENAME DATABASE "old_name" TO "new_name";
-- Force rename (terminates active sessions)
RENAME DATABASE "old_name" TO "new_name" FORCE;
| Component | Description | Required |
|---|---|---|
| old_name | Current name of the database | Yes |
| new_name | New name for the database | Yes |
| FORCE | Force flag to terminate active sessions | No |
New database names must follow the same rules as CREATE DATABASE:
_) and hyphens (-)-- Rename a database (no active sessions)
RENAME DATABASE "old_app" TO "new_app";
-- Response: Database 'old_app' renamed to 'new_app' successfully.
-- Attempt rename with active sessions (will fail)
RENAME DATABASE "production_db" TO "prod_v2";
-- Error: Cannot rename database 'production_db': 5 active session(s) detected.
-- Use FORCE to terminate sessions and proceed.
-- Force rename (terminates sessions)
RENAME DATABASE "production_db" TO "prod_v2" FORCE;
-- Response: Database 'production_db' renamed to 'prod_v2' successfully.
-- 5 session(s) were terminated.
-- Rename for environment promotion
RENAME DATABASE "app-staging" TO "app-staging-old";
RENAME DATABASE "app-dev" TO "app-staging";
-- Rename for version upgrade
RENAME DATABASE "analytics_v1" TO "analytics_v1_archive";
RENAME DATABASE "analytics_v2_beta" TO "analytics_v2";
AdminThe RENAME DATABASE operation performs the following steps atomically:
os.Renameprimary.Databases bundle with new name and file path| Error | Cause | Solution |
|---|---|---|
permission denied |
User lacks Admin permission | Use an account with Admin privileges |
database not found |
Old database doesn't exist | Verify database name with SHOW DATABASES |
database already exists |
New name is already in use | Choose a different name |
invalid database name |
New name violates naming rules | Follow naming rules (start with letter, alphanumeric + _ -) |
active sessions detected |
Sessions exist without FORCE | Add FORCE flag or wait for sessions to close |
same database name |
Old and new names are identical | Choose a different new name |
rename failed |
Filesystem error during rename | Check permissions and disk space |
catalog update failed |
Rename succeeded but catalog update failed | Database is renamed; catalog may need manual repair |
The FORCE flag provides powerful session management:
Behavior:
Use Cases for FORCE:
When NOT to use FORCE:
The rename operation includes several safety mechanisms:
DO:
app-v2, not app_v2)DON'T:
primary)_ and --- Step 1: Check current databases
SHOW DATABASES;
-- Response: ["primary", "old_analytics", "user_service"]
-- Step 2: Attempt basic rename
RENAME DATABASE "old_analytics" TO "analytics_v2";
-- Error: Cannot rename database 'old_analytics': 3 active session(s) detected.
-- Step 3: Use FORCE to proceed
RENAME DATABASE "old_analytics" TO "analytics_v2" FORCE;
-- Response: Database 'old_analytics' renamed to 'analytics_v2' successfully.
-- 3 session(s) were terminated.
-- Step 4: Verify rename
SHOW DATABASES;
-- Response: ["primary", "analytics_v2", "user_service"]
-- Step 5: Switch to renamed database
USE "analytics_v2";
-- Response: Switched to database 'analytics_v2'
-- Step 6: Verify data integrity
SELECT * FROM BUNDLE "Events" LIMIT 10;
-- Data should be intact after rename
After a rename operation, verify:
-- 1. Database exists with new name
SHOW DATABASES;
-- 2. Can switch to new database
USE "new_database_name";
-- 3. Bundles are accessible
SHOW BUNDLES;
-- 4. Data is intact
SELECT COUNT(*) FROM BUNDLE "YourBundle";
When a rename occurs, the WAL contains:
{
"transaction_id": "a1b2c3d4e5f6g7h8",
"operation": "RENAME_DATABASE",
"timestamp": "2025-11-21T18:30:00Z",
"old_name": "old_analytics",
"new_name": "analytics_v2",
"database_id": "db-uuid-12345",
"force": true,
"sessions_terminated": 3
}
Switches the active database context for subsequent operations. All commands after USE will execute against the specified database.
USE "database_name";
| Component | Description | Required |
|---|---|---|
| database_name | Name of the database to switch to | Yes |
-- Switch to a database
USE "MyApp";
-- Now all commands use MyApp database
CREATE BUNDLE "Users" WITH FIELDS (
{"id", STRING, true, true},
{"name", STRING, true, false}
);
-- Start with one database
USE "analytics-dev";
SELECT * FROM BUNDLE "Events";
-- Switch to another database
USE "analytics-prod";
SELECT * FROM BUNDLE "Events"; -- Now querying prod database
| Error | Cause | Solution |
|---|---|---|
database not found |
Database doesn't exist or isn't loaded | Use SHOW DATABASES to see available databases |
catalog verification failed |
Database exists but not in catalog | Check catalog integrity |
invalid syntax |
Missing quotes or incorrect format | Use format: USE "database_name"; |
The USE command sets the session-level database context:
USE commandDO:
USE before working with bundles or documentsSHOW DATABASES to list available databasesDON'T:
-- List available databases
SHOW DATABASES;
-- Switch to development database
USE "app-dev";
-- Create some test data
ADD DOCUMENT TO BUNDLE "Users"
WITH VALUES ({"id": "1", "name": "Test User"});
-- Switch to production database
USE "app-prod";
-- Now working with production data
SELECT * FROM BUNDLE "Users";
Last updated: March 2026