dongliao6491 2019-05-07 11:28
浏览 110
已采纳

是什么导致该代码中的SQL语法错误1064? [重复]

This question already has an answer here:

I'm trying to insert data into my new table, and I got sql error 1064.

CREATE TABLE IF NOT EXISTS `users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`update` INT(11),
`name` VARCHAR(255),
`dob` INT(11),
`status` INT,
`avatar` VARCHAR(255),
`province` VARCHAR(255),
`city` VARCHAR(255),
`district` VARCHAR(255),
`village` VARCHAR(255),
CONSTRAINT `pk_users` PRIMARY KEY (id))
INSERT INTO `users` (`update`, `name`, `dob`, `status`,`avatar`,
`province`, `city`, `district`, `village`) VALUES (1557227442, Cortez Mante, 702086400, 1, http://lorempixel.com/150/150/, Provinsi, Kota, Kecamatan, Kelurahan)

And I got error:

$ panic: 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 'Mante, 702086400, 1, http://lorempixel.com/150/150/, Provinsi, Kota, Kecamatan, ' at line 1

I don't know exactly what cause the error. can anyone help me with this ?

btw, I am using Golang for crating and inserting to this table.

this is how I connect to mysql and create the table through Go:

func connect() (db *sql.DB) {
  dbDriver := "mysql"
  dbUser := "root"
  dbPass := "password"
  dbName := "user"
  db, err := sql.Open(dbDriver, dbUser+":"+dbPass+"@/"+dbName)

  if err != nil {
      panic(err.Error())
  }

  return db
}

func create_table() {
  db := connect()
  sql := fmt.Sprintf(
    "CREATE TABLE IF NOT EXISTS `users` (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
    "`id` INT UNSIGNED NOT NULL AUTO_INCREMENT",
    "`update` INT(11)",
    "`name` VARCHAR(255)",
    "`dob` INT(11)",
    "`status` INT",
    "`avatar` VARCHAR(255)",
    "`province` VARCHAR(255)",
    "`city` VARCHAR(255)",
    "`district` VARCHAR(255)",
    "`village` VARCHAR(255)",
    "CONSTRAINT `pk_users` PRIMARY KEY (id)")

  fmt.Println(sql)

  insert, err := db.Query(sql)
  if err != nil {
    panic(err.Error())
  }

  defer insert.Close()
}

this is how I insert the data:

func AddUser(u user.User) {
  db := connect()

  insert_users := "INSERT INTO `users` (`update`, `name`, `dob`, `status`, `avatar`, `province`, `city`, `district`, `village`)"
  values_users := fmt.Sprintf(
    "VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
    strconv.Itoa(u.Update), u.Name, strconv.Itoa(u.Dob), strconv.Itoa(u.Status), u.Avatar, u.Province, u.City, u.District, u.Village)

  sql := insert_users + " " + values_users

  fmt.Println(sql)

  insert, err := db.Query(sql)

  if err != nil {
    panic(err.Error())
  } else {
    fmt.Println("success add user:", u.Id)
  }

  defer insert.Close()
}
</div>
  • 写回答

2条回答 默认 最新

  • douchuoliu4422 2019-05-07 11:31
    关注

    miisng quote around string values

     INSERT INTO `users` (`update`, `name`, `dob`, `status`,`avatar`,
            `province`, `city`, `district`, `village`) 
    VALUES (1557227442, 'Cortez Mante', 702086400, 1, 'http://lorempixel.com/150/150/', 'Provinsi', 'Kota', 'Kecamatan', 'Kelurahan')
    

    your contents string

     'Cortez Mante' 
    
     'http://lorempixel.com/150/150/'
    
    'Provinsi', 'Kota', 'Kecamatan', 'Kelurahan'
    

    and you should close each single statements with semicolon

    CREATE TABLE IF NOT EXISTS `users` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
    `update` INT(11),
    `name` VARCHAR(255),
    `dob` INT(11),
    `status` INT,
    `avatar` VARCHAR(255),
    `province` VARCHAR(255),
    `city` VARCHAR(255),
    `district` VARCHAR(255),
    `village` VARCHAR(255),
    CONSTRAINT `pk_users` PRIMARY KEY (id)
    )
    ;
    
     INSERT INTO `users` (`update`, `name`, `dob`, `status`,`avatar`,
            `province`, `city`, `district`, `village`) 
    VALUES (1557227442, 'Cortez Mante', 702086400, 1, 'http://lorempixel.com/150/150/', 'Provinsi', 'Kota',
         'Kecamatan', 'Kelurahan')
    ;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器