質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Q&A

解決済

1回答

1000閲覧

goでsqlite3を操作出来ない

eng

総合スコア7

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

0グッド

1クリップ

投稿2019/08/09 04:45

編集2019/08/09 06:20

#テーブルが作成されない
準備として以下をインストールしました。

$ brew install sqlite $ Xcode-select --install $ gcc --version Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1 Apple LLVM version 10.0.1 (clang-1001.0.46.4) Target: x86_64-apple-darwin18.7.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin $ go get github.com/mattn/go-sqlite3

そしてmain.goファイルに以下のようにpersonテーブルを作成し、

main.go

1import ( 2 "database/sql" 3 "log" 4 5 _ "github.com/mattn/go-sqlite3" 6) 7 8var DbConnection *sql.DB 9 10func main(){ 11 DbConnection, _ := sql.Open("sqlite3", "./example.sql") 12 defer DbConnection.Close() 13 cmd := `CREATE TABLE IF NOT EXISTS person( 14 name STRING, 15 age INT)` 16 17 _ , err := DbConnection.Exec(cmd) 18 if err != nil{ 19 log.Fatalln(err) 20 } 21} 22

ターミナルでsqliteを使いました。

$ go run main.go $ sqlite3 example.sql sqlite> .table sqlite>

すると、作ったはずのpersonテーブルがないです。
go run main.goの後にexample.sqlという中身は何も書いていないファイルは作られています。

##試したこと
こちらGoのデータベース操作を参考にして

const dbPath = "/Users/hoge/go/src/github.com/hoge/lesson/db/db.sql"

のように試してみましたが変わりませんでした。
ターミナルからデータベース操作は出来ますが、こちらの方が便利だと感じるのでエディタから操作したいです。
何か解決策などありましたら力をお借りしたいです。よろしくお願いします。

##環境
MacBook Pro (13-inch, 2017) バージョン 10.14.6
go version go1.12.4 darwin/amd64
$GOPATH = /Users/name/go
pwd = /Users/name/go/src/hoge

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2019/08/09 05:21

書かれているものを見る限りだと、goのプログラムの方、実行してないですよね?
eng

2019/08/09 06:21

失礼いたしました。 `go run main.go`の後に`sqlite3 example.sql`です。
yoorwm

2019/08/09 06:40

こちらの環境でソースを実行してみた感じ、personテーブル出来てましたね。一体、何が原因やら・・・ それと今回の問題には関係無いですが、*.sqlはSQL文が書かれているファイルを指す事が多いので、*.dbなどとしておいた方が良いかもしれません。
yoorwm

2019/08/09 06:46 編集

そういえば、無意識のうちにソースの先頭にpackage mainを入れて試していましたが、素で入れていなかったのなら修正しておいてください。
eng

2019/08/09 06:48

引き続き調べてみます。。 なるほど、ありがとうございます!
guest

回答1

0

自己解決

permissionの問題でした。
書き込みの権限がなかったので、権限を追加すると解決しました。
ありがとうございました!

投稿2019/08/10 18:56

eng

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問