Last active
January 6, 2017 14:19
-
-
Save ClarksonCJ/86f03e08f9298e8cad1edaed718a78ce to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"database/sql" | |
"github.com/Sirupsen/logrus" | |
_ "github.com/mattn/go-oci8" | |
) | |
/* | |
Table DDL used for Demo on Oracle XE 11.2 | |
CREATE TABLE ERROR_REPRO | |
( | |
ID NUMBER(*) | |
); | |
*/ | |
func main() { | |
logrus.SetFormatter(&logrus.JSONFormatter{}) | |
logrus.SetLevel(logrus.DebugLevel) | |
logger := logrus.WithField("ProcessName", "ORA-01000 demo") | |
logger.Debug("main: Starting up") | |
logger.Debug("main: Connecting to DB") | |
con, err := sql.Open("oci8", "username/password@localhost:1521") | |
if err != nil { | |
logger.WithField("error", err).Error("main: failed to connect to database") | |
logger.Fatal(err) | |
} | |
defer func() { | |
err = con.Close() | |
if err != nil { | |
logger.WithError(err).Error("Error closing database connection") | |
} else { | |
logger.Info("Closed database connection, exiting....") | |
} | |
}() | |
logger.Info("Using stmt.Exec...") | |
stmt, err := con.Prepare("INSERT INTO ERROR_REPRO(ID) VALUES (:1)") | |
defer stmt.Close() | |
if err != nil { | |
logger.WithError(err).Error("Failed to prepare statement") | |
return | |
} | |
for i := 0; i < 500; i++ { | |
_, err := stmt.Exec(i) | |
if err != nil { | |
logger.WithFields(logrus.Fields{ | |
"error": err, | |
"ID": i, | |
}).Error("stmt.Exec Failed to write test data") | |
} else { | |
logger.WithField("ID", i).Info("stmt.Exec record written successfully") | |
} | |
} | |
logger.Info("End of Using stmt.Exec...") | |
logger.Info("Using db.Exec...") | |
for i := 0; i < 500; i++ { | |
_, err := con.Exec("INSERT INTO ERROR_REPRO(ID) VALUES (:1)", i) | |
if err != nil { | |
logger.WithFields(logrus.Fields{ | |
"error": err, | |
"ID": i, | |
}).Error("db.Exec Failed to write test data") | |
} else { | |
logger.WithField("ID", i).Info("db.Exec record written successfully") | |
} | |
} | |
logger.Info("End of Using db.Exec...") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment