This tutorial shows you how build a simple Hello World Go application with CockroachDB and the Go pgx driver.
Step 1. Start CockroachDB
Choose whether to run a temporary local cluster or a free CockroachDB cluster on CockroachCloud Free (beta). The instructions below will adjust accordingly.
Create a free cluster
- If you haven't already, sign up for a CockroachCloud account.
- Log in to your CockroachCloud account.
- On the Clusters page, click Create Cluster.
On the Create your cluster page, select CockroachCloud Free.
Note:This cluster will be free forever.
(Optional) Select a cloud provider (GCP or AWS) in the Additional configuration section.
(Optional) Select a region in the Additional configuration section. For optimal performance, select the cloud provider region closest to the region in which you are running your application.
Click Create your free cluster.
Your cluster will be created in approximately 20-30 seconds.
Set up your cluster connection
Once your cluster is created, the Connect to cluster-name dialog displays. Use the information provided in the dialog to set up your cluster connection for the SQL user that was created by default:
In your terminal, run the second command from the dialog to create a new
certs
directory on your local machine and download the CA certificate to that directory:curl --create-dirs -o ~/.postgresql/root.crt -O https://cockroachlabs.cloud/clusters/<cluster-id>/cert
Your
cert
file will be downloaded to~/.postgres/root.crt
.curl --create-dirs -o ~/.postgresql/root.crt -O https://cockroachlabs.cloud/clusters/<cluster-id>/cert
Your
cert
file will be downloaded to~/.postgres/root.crt
.mkdir -p $env:appdata\.postgresql\; Invoke-WebRequest -Uri https://cockroachlabs.cloud/clusters/<cluster-id>/cert -OutFile $env:appdata\.postgresql\root.crt
Your
cert
file will be downloaded to%APPDATA%/.postgres/root.crt
.Copy the connection string provided, which will be used in the next steps (and to connect to your cluster in the future).
Warning:This connection string contains your password, which will be provided only once. If you forget your password, you can reset it by going to the SQL Users page.
cockroach sql --url 'postgresql://<user>@<free-tier-host>.<region>.cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert='$HOME'/.postgresql/root.crt&options=--cluster=<cluster-name>-<tenant-id>'
cockroach sql --url 'postgresql://<user>@<free-tier-host>.<region>.cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert='$HOME'/.postgresql/root.crt&options=--cluster=<cluster-name>-<tenant-id>'
cockroach sql --url "postgresql://<user>@<free-tier-host>.<region>.cockroachlabs.cloud:26257/defaultdb?sslmode=verify-full&sslrootcert=$env:appdata/.postgresql/root.crt&options=--cluster=<cluster-name>-<tenant-id>"
- If you haven't already, download the CockroachDB binary.
Run the
cockroach demo
command:$ cockroach demo \ --no-example-database
This starts a temporary, in-memory cluster and opens an interactive SQL shell to the cluster. Any changes to the database will not persist after the cluster is stopped.
Note:If
cockroach demo
fails due to SSL authentication, make sure you have cleared any previously downloaded CA certificates from the directory~/.postgresql
.Take note of the
(sql)
connection string in the SQL shell welcome text:# Connection parameters: # (webui) http://127.0.0.1:8080/demologin?password=demo76950&username=demo # (sql) postgres://demo:demo76950@127.0.0.1:26257?sslmode=require # (sql/unix) postgres://demo:demo76950@?host=%2Fvar%2Ffolders%2Fc8%2Fb_q93vjj0ybfz0fz0z8vy9zc0000gp%2FT%2Fdemo070856957&port=26257
Step 2. Get the code
Clone the code's GitHub repo:
$ git clone https://github.com/cockroachlabs/hello-world-go-pgx/
The main.go
file contains all of the code for the sample Hello World app:
package main
import (
"bufio"
"context"
"log"
"os"
"github.com/jackc/pgx/v4"
)
func main() {
// Read in connection string
scanner := bufio.NewScanner(os.Stdin)
log.Println("Enter a connection string: ")
scanner.Scan()
connstring := scanner.Text()
// Attempt to connect
config, err := pgx.ParseConfig(os.ExpandEnv(connstring))
if err != nil {
log.Fatal("error configuring the database: ", err)
}
conn, err := pgx.ConnectConfig(context.Background(), config)
if err != nil {
log.Fatal("error connecting to the database: ", err)
}
defer conn.Close(context.Background())
log.Println("Hey! You successfully connected to your CockroachDB cluster.")
}
The main
method of this program does the following:
- Attempts to connect to a running cluster, given a connection string.
- Prints a message to the terminal about the connection status.
Step 3. Run the code
Initialize and run the app:
$ go mod init basic-sample && go mod tidy
$ go run main.go
The program will prompt you for a connection string to the database:
Enter a connection string:
Enter the (sql/unix)
connection URL provided in the demo cluster's SQL shell welcome text.
Enter the connection string provided in the Connection info window of the CockroachCloud Console.
You need to provide a SQL user password in order to securely connect to a CockroachCloud cluster. The connection string should have a placeholder for the password (<ENTER-PASSWORD>
).
After entering the connection string, the program will execute.
The output should look like this:
Hey! You successfully connected to your CockroachDB cluster.
See also
You might also be interested in the following pages: