1

I am trying to build a CRUD in digital ocean serverless functions. I am testing with sqlite3 and insert into the table. When I tried to deploy it to productions, I am getting errors. Here is my code:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-sqlite3"
)

func Main(args map[string]interface{}) map[string]interface{} {
db, err := sql.Open("sqlite3", "./data.db")
checkErr(err)

// insert
stmt, err := db.Prepare("INSERT INTO userinfo(username, departname, created) values(?,?,?)")
checkErr(err)

res, err := stmt.Exec("rumi", "CSE", "2012-12-09")
checkErr(err)

id, err := res.LastInsertId()
checkErr(err)

fmt.Println(id)

db.Close()

msg := make(map[string]interface{})
msg["body"] = id
return msg
}

Errors I am getting:

➜  functions git:(master) ✗ doctl serverless deploy . --remote-build
Deploying '/home/rumi/go/src/github.com/manjurulhoque/digitalocean-cloud-functions/functions'
  to namespace 'fn-b799454253a-a40440-4639-937f-05102a48c06e'
  on host 'https://fa45as-sgp1-18b45c02afgc.doserverless.co'
Submitted action 'blog/createBlog' for remote building and deployment in runtime go:default (id: b3d5421ee5656bb44c4295421eebb44c642cf)
Submitted action 'sample/hello' for remote building and deployment in runtime go:default (id: b3d5421ee5656bb44c4295421eebb44c642cf)
Submitted action 'blog/db' for remote building and deployment in runtime go:default (id: edcc9eefce9f4aa58c9eefce9f2aa5e6)
Transcript of remote build session for action 'blog/db':
Output of failed build in /tmp/slices/builds/fn-b79956253a-a4080-465639-95637f-05102a48c06e/blog_db/2022-10-22T04-23-08.642Z/packages/blog/db
initializing modules
go: creating new go.mod: module exec
go: to add module requirements and sums:
        go mod tidy
building
db.go:6:2: no required module provides package github.com/mattn/go-sqlite3; to add it:
        go get github.com/mattn/go-sqlite3


Deployed functions ('doctl sbx fn get <funcName> --url' for URL):
  - blog/createBlog
  - sample/hello
Failures:
Error: While deploying action 'blog/db': './build.sh' exited with code 1

project.yml

environment: {}
parameters: {}
packages:
  - name: blog
    environment: {}
    parameters: {}
    annotations: {}
    functions:
      - name: db
        binary: false
        main: ''
        runtime: 'go:default'
        web: true
        parameters: {}
        environment: {}
        annotations: {}
        limits: {}

I didn't find any good resource though to connect to DB. Any help would be appreciated.

2
  • 1
    How are you deploying the function? Maybe add the --remote-build flag to your deploy command as stated here Commented Oct 23, 2022 at 1:07
  • @rakeen Please check my answer. This is how I solved it. Commented Nov 4, 2022 at 10:53

1 Answer 1

1

In DO, every function itself is an app. So you need to create go.mod and go.sum in each function directoy.

Below is one of my project structure

enter image description here

Note: I wrote an article on how to setup golang app for DO https://medium.com/@manzurulhoque/use-package-in-digital-ocean-do-serverless-functions-using-golang-cb5200ab22ee

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.