第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Heroku 部署期間使用 Go 執(zhí)行 MySQL 腳本時出現(xiàn) SQL 語法錯誤

在 Heroku 部署期間使用 Go 執(zhí)行 MySQL 腳本時出現(xiàn) SQL 語法錯誤

Go
牧羊人nacy 2022-09-05 10:45:24
我正在將一個使用Go和MySQl為數(shù)據(jù)庫制作的API部署到Heroku。我正在遵循本指南并設(shè)置所有內(nèi)容,但現(xiàn)在我正在嘗試執(zhí)行MySQL腳本以使用一些虛擬數(shù)據(jù)設(shè)置表。但是我經(jīng)常收到錯誤,說腳本是錯誤的,即使我在本地使用它沒有問題。我已經(jīng)將MySQL數(shù)據(jù)庫連接到Heroku環(huán)境,并且啟動數(shù)據(jù)庫不會引發(fā)任何錯誤。以下是將其部署到 Heroku 時顯示錯誤的日志:2021-06-05T12:49:16.442359+00:00 app[web.1]: ERROR  2021/06/05 12:49:16 main.go:45: Error executing SQL script : Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'USE assessment;架構(gòu).sqlCREATE DATABASE assessment;USE assessment;CREATE TABLE users (    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,     email VARCHAR(255) NOT NULL);INSERT INTO `users` VALUES (1,"test1@gmail.com");INSERT INTO `users` VALUES (2,"test2@gmail.com");INSERT INTO `users` VALUES (3,"test3@gmail.com");INSERT INTO `users` VALUES (4,"test4@gmail.com");INSERT INTO `users` VALUES (5,"test5@gmail.com");CREATE TABLE features (    feature_id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,    user_id INTEGER NOT NULL,    feature_name VARCHAR(100) NOT NULL,    can_access BOOLEAN NOT NULL DEFAULT FALSE,    FOREIGN KEY (user_id) REFERENCES users(id) );INSERT INTO `features` VALUES (1, 1, "automated-investing", 1);INSERT INTO `features` VALUES (2, 1, "crypto", 0);INSERT INTO `features` VALUES (3, 2, "crypto", 0);INSERT INTO `features` VALUES (4, 3, "automated-investing", 0);INSERT INTO `features` VALUES (5, 4, "automated-investing", 1);INSERT INTO `features` VALUES (7, 1, "financial-tracking", 1);INSERT INTO `features` VALUES (8, 2, "financial-tracking", 0);INSERT INTO `features` VALUES (9, 3, "financial-tracking", 1);INSERT INTO `features` VALUES (10, 4, "financial-tracking", 0);
查看完整描述

2 回答

?
瀟湘沐

TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊

大多數(shù)針對MySQL運(yùn)行查詢的接口都不支持多查詢。換句話說,它們不允許用分號分隔多個 SQL 語句,每個調(diào)用只支持一個 SQL 語句。


在你的例子中,它返回了一個語法錯誤,因為假設(shè)輸入被解析為單個語句,CREATE DATABASE語句中沒有。USE ...USE


CREATE DATABASE assessment; USE assessment;

這意味著,如果要處理包含許多 SQL 語句的文件,則不能只執(zhí)行正在執(zhí)行的操作,并將整個文件視為一個字符串,以傳遞給以下各項的單個調(diào)用:Exec()


c, ioErr := ioutil.ReadFile("./schema.sql")

sqlScript := string(c)

...

_, err = db.Exec(sqlScript)

必須將該文件的內(nèi)容拆分為單獨(dú)的 SQL 語句,然后循環(huán)訪問這些語句,一次運(yùn)行每個語句。

這比聽起來更復(fù)雜,因為:

  • SQL 腳本可能包含一個語句,該語句將語句之間的字符從分號更改為其他字符。DELIMITER

  • 字符串文本或注釋中可能有分號。

  • 某些語句(如 CREATE 過程、CREATE 觸發(fā)器等)可能在例程正文中的語句之間包含分號。您不希望這些分號成為語句的末尾,而是希望將所有內(nèi)容包含在例程定義的末尾。

  • 語句本身不能由MySQL服務(wù)器執(zhí)行。它只控制客戶端。因此,您必須將其視為未發(fā)送到循環(huán)中的服務(wù)器的異常。實際上,還有一堆其他mysql客戶端內(nèi)置命令,如果您在SQL腳本中找到它們,則必須以類似的方式處理它們。DELIMITER

如果你最終對所有這些邏輯進(jìn)行編碼,那么你基本上已經(jīng)在Go中重新實現(xiàn)了MySQL命令行客戶端。

如果您跳過所有編碼工作,只需使用os.exec.Command運(yùn)行MySQL命令行客戶端,它將更快,更簡單。想想看 - 它將為您節(jié)省數(shù)周的編碼工作,復(fù)制運(yùn)行MySQL客戶端中已經(jīng)實現(xiàn)的SQL腳本的所有細(xì)微差別功能。


查看完整回答
反對 回復(fù) 2022-09-05
?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗 獲得超5個贊

好吧,所以我決定使用Heroku提供的憑據(jù)直接連接到mysql數(shù)據(jù)庫。


這將返回數(shù)據(jù)庫的 URL。


heroku config | grep CLEARDB_DATABASE_URL

它看起來像這樣:


mysql://alphanum-username:alphanum-password@us-cdbr-iron-east-01.cleardb.net/heroku_alphanum_name?reconnect=true

然后使用主機(jī)從URL連接到它,在本例中是。密碼來自 。mysql -u username -h host -pus-cdbr-iron-east-01.cleardb.netalphanum-password


我運(yùn)行了相同的查詢,但收到此錯誤,這意味著我無法訪問數(shù)據(jù)庫。


ERROR 1044 (42000): Access denied for user 'bbf806af82a4c9'@'%' to database 'assessment'

“正在運(yùn)行”顯示可以作為用戶連接到特定的數(shù)據(jù)庫。show databases;


mysql> SHOW DATABASES;

+------------------------+

| Database               |

+------------------------+

| information_schema     |

| herokusdfhsdfhsdfsfsdf |

+------------------------+

從這里開始,我運(yùn)行并運(yùn)行了查詢的其余部分,沒有任何問題。USE herokusdfhsdfhsdfsfsdf


查看完整回答
反對 回復(fù) 2022-09-05
  • 2 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號