This topic describes how to build an application by using mysql2 and OceanBase Database. It also covers the use of the application for fundamental database operations, including table creation, data insertion, and data query.
Prerequisites
- You have installed Ruby and RubyGems.
- You have installed OceanBase Database and created a MySQL-compatible tenant.
Procedure
- Check the versions of Ruby and RubyGems.
- Install the required gems.
- Obtain the OceanBase Database connection information.
- Create the sample program.
- Run the sample program.
Step 1: Check the versions of Ruby and RubyGems
Open the terminal and run the following commands to check the versions of Ruby and RubyGems:
ruby -v
gem -v
Step 2: Install the required gems
Install mysql2 by using gem:
gem install mysql2
Step 3: Obtain the OceanBase Database connection information
Contact the deployment personnel or administrator of OceanBase Database to obtain the connection string.
mysql -h$host -P$port -u$user_name -p$password -D$database_name
The parameters are described as follows:
$host: the IP address for connecting to OceanBase Database.$port: the port for connecting to OceanBase Database.$database_name: the name of the database to be accessed.$user_name: the account for connecting to the tenant.$password: the password of the account.
Step 4: Create the sample program
Create the configuration file
config.rb:PASSWORD = ENV['OB_PASSWORD'] || 'your_password' CLIENT_CONFIG = { host: 'your_host', port: your_port, username: 'your_username', password: PASSWORD, all_databases: true }Create the sample program
main.rb:require 'mysql2' require_relative 'config' # Create the connection client = Mysql2::Client.new(CLIENT_CONFIG) # Create the database db_name = "ruby_test_db" client.query("CREATE DATABASE IF NOT EXISTS #{db_name}") client.query("USE #{db_name}") puts "Database '#{db_name}' selected" # Create the table client.query("DROP TABLE IF EXISTS users") client.query("CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )") # Insert sample data sample_names = ["Alice", "Bob", "Charlie", "David"] sample_names.each do |name| client.query("INSERT INTO users (name) VALUES ('#{name}')") end puts "Table created and sample data inserted successfully" puts "Inserted #{sample_names.length} sample records" # Query and display all data results = client.query("SELECT * FROM users") puts "\nUsers:" results.each do |row| puts "#{row['id']}: #{row['name']} (created: #{row['created_at']})" end # Close the connection client.close
Step 5: Run the sample program
Run the program:
ruby main.rbExpected result:
Database 'ruby_test_db' selected Table created and sample data inserted successfully Inserted 4 sample records Users: 1: Alice (created: 2025-05-20 17:56:22 +0800) 2: Bob (created: 2025-05-20 17:56:22 +0800) 3: Charlie (created: 2025-05-20 17:56:22 +0800) 4: David (created: 2025-05-20 17:56:22 +0800)
Common issues
Connection errors: If you cannot connect to the database, check:
- Whether the database address and port are correct
- Whether the username and password are correct
- Whether the network connection is normal
Privilege errors: If you encounter privilege-related errors, ensure that the user has sufficient privileges to perform the required operations.
SQL syntax errors: If the SQL statement has syntax errors, check whether the SQL syntax is correct.
Performance optimization recommendations
- Use a connection pool to manage database connections.
- Use prepared statements.
- Set appropriate query timeout time.
- Use batch operations to improve performance.