@vGrabko99
html, css, js, php, golang, mysql

Почему mysql возвращает ошибку?

Вот код
type User struct {
		UserID         int    `sql:"AUTO_INCREMENT"`
		UserLogin      string `sql:"type:varchar(50)"`
		UserPass       string `sql:"type:varchar(200)"`
		UserSaltInt    string `sql:"type:bigint"`
		UserSaltString string `sql:"type:text"`
	}

	db, err := gorm.Open("mysql", "root:parsh888@/generais?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		log.Fatal(err)
	}
	db.DB()
	db.DB().Ping()
	db.DB().SetMaxIdleConns(10)
	db.DB().SetMaxOpenConns(100)
	db.SingularTable(true)

	db.CreateTable(&User{})
	db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{})


Возвращает ошибку
(Error 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key) 
[2015-08-17 12:37:23]  

(Error 1075: Incorrect table definition; there can be only one auto column and it must be defined as a key) 
[2015-08-17 12:37:23]

Что я не так сделал? Зарание спасибо.
https://github.com/jinzhu/gorm

Если закоментировать строку с авто инкементом то создаст таблицу а в лог напишет
(Error 1050: Table 'user' already exists) 
[2015-08-17 12:42:55]
  • Вопрос задан
  • 3200 просмотров
Решения вопроса 5
svfat
@svfat
☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
Не указан PRIMARY KEY
Ответ написан
Комментировать
@Arik
UserID int `sql:"AUTO_INCREMENT"`

Может по-умолчанию создается id c AUTO_INCREMENT? А вы тут еще одно поле такое делаете?
Ответ написан
Комментировать
Melkij
@Melkij
PostgreSQL DBA
Видимо ваш orm не ставит на автоинкрементное поле первичный или уникальный индекс, либо пытается добавить ещё один автоинкремент.
Покажите SQL-запрос и ответ будет очевиден.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
На автоинкрементное поле нужно добавлять ключ.
С синтаксисом не скажу, но здесь вот так написано:
ID uint `gorm:"primary_key"`
Ответ написан
Комментировать
@vGrabko99 Автор вопроса
html, css, js, php, golang, mysql
Работает без единой ошибки
func Auth(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {

	type User struct {
		UserID         int    `sql:"AUTO_INCREMENT;unique_index" gorm:"primary_key"`
		UserLogin      string `sql:"type:varchar(50);unique_index"`
		UserPass       string `sql:"type:varchar(200)"`
		UserSaltInt    string `sql:"type:bigint"`
		UserSaltString string `sql:"type:text"`
	}

	db, err := gorm.Open("mysql", "root:parsh888@/generais?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		log.Fatal(err)
	}
	db.DB()
	db.DB().Ping()
	db.DB().SetMaxIdleConns(10)
	db.DB().SetMaxOpenConns(100)
	db.SingularTable(true)

	db.CreateTable(&User{})
	db.Set("gorm:table_options", "ENGINE=InnoDB").CreateTable(&User{})
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mantyr
Пишу много Golang кода с удовольствием:)
Школьник, ты по одной задаче открыл тонну связанных вопросов... учись группировать данные.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы