0
我的程序讀入一個sql文件並對數據庫執行操作。一個文件兩個不同的輸出 - Windows Server 2012
昨天我通過記事本在服務器上編輯了一個sql文件。
我今天再次通過記事本在同一個文件上做了一個更改。
當程序讀入文件時,我對sql的更改不存在。
將sql內容打印到控制檯顯示該二進制文件正在從昨天的版本讀取。
這裏玩什麼黑魔法?
刪除文件不起作用。
如果我再次創建Date created
時間戳是從1個月前。 Date modified
來自昨天。
在記事本中打開文件,任何文本閱讀器你可以想到的wordpad顯示正確的內容。
Binary從昨天開始讀取版本。
這是二進制如何讀取文件
file, err := ioutil.ReadFile("appointment.sql")
if err != nil {
log.Fatal(err)
}
計劃是交叉編譯在Mac上的窗口。
Sql文件最初是通過vim在Mac上寫入,然後上傳到服務器。
編輯:我建議調試後包括方法的代碼。
func (r *Icar) ReadAppointments(qCfg dms.QueryConfig) []dms.Appointment {
// r.conn contains the db connection
/*DEBUGGING*/
name := "appointment.sql"
fmt.Printf("%q\n", name)
path, err := filepath.Abs(name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%q\n", path) //correct path
file, err := ioutil.ReadFile("appointment.sql")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%q\n", file) //correct output
/*END*/
appointmentQuery := string(file)
fmt.Println(appointmentQuery) //correct output
appointmentQuery = strings.Replace(appointmentQuery, "@", qCfg.QueryLocationID, -1)
fmt.Println(appointmentQuery) //correct output
rows, err := r.conn.Query(appointmentQuery)
if err != nil {
fmt.Println(appointmentQuery) //wrong output. output contains edits from a previous version
log.Fatal("Error reading from the database: %s", err.Error())
}
appointments := []dms.Appointment{}
var (
ExternalID,
WONumber,
CustomerWaiting interface{}
)
for rows.Next() {
appointment := dms.Appointment{}
err = rows.Scan(&ExternalID, &WONumber, &appointment.AppointmentDate, &CustomerWaiting)
if err != nil {
fmt.Println(appointmentQuery)
log.Fatal(err)
}
toStr := []interface{}{ExternalID, WONumber}
toInt := []interface{}{CustomerWaiting}
convertedString := d.ConvertToStr(toStr)
convertedInt := d.ConvertToInt(toInt)
appointment.ExternalID = convertedString[0]
appointment.WONumber = convertedString[1]
appointment.CustomerWaiting = convertedInt[0]
appointments = append(appointments, appointment)
}
err = rows.Close()
return appointments
}
我在我的主要功能中關閉延遲語句中的db連接。
下面是引用構造
func New(config QueryConfig) (*Icar, func()) {
db, err := sql.Open("odbc", config.Connection)
if err != nil {
log.Fatal("The database doesn't open correctly:\n", err.Error())
}
icar := &Icar{
conn: db,
}
return icar, func() {
icar.conn.Close()
}
}
感謝您的調試尖端。輸出是我所期望的,現在我更加困惑。我用一些代碼編輯了我的帖子。如果你能夠解決眼前的問題,將很感激。 – user3017869