Fix create index with comments in MySQL (#4521)
* Fix create index with comments in MySQL * Fix tests
This commit is contained in:
		
							parent
							
								
									74752018dc
								
							
						
					
					
						commit
						2202e99cbf
					
				| @ -195,6 +195,10 @@ func (m Migrator) CreateTable(values ...interface{}) error { | |||||||
| 					} | 					} | ||||||
| 					createTableSQL += "INDEX ? ?" | 					createTableSQL += "INDEX ? ?" | ||||||
| 
 | 
 | ||||||
|  | 					if idx.Comment != "" { | ||||||
|  | 						createTableSQL += fmt.Sprintf(" COMMENT '%s'", idx.Comment) | ||||||
|  | 					} | ||||||
|  | 
 | ||||||
| 					if idx.Option != "" { | 					if idx.Option != "" { | ||||||
| 						createTableSQL += " " + idx.Option | 						createTableSQL += " " + idx.Option | ||||||
| 					} | 					} | ||||||
| @ -601,6 +605,10 @@ func (m Migrator) CreateIndex(value interface{}, name string) error { | |||||||
| 				createIndexSQL += " USING " + idx.Type | 				createIndexSQL += " USING " + idx.Type | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			if idx.Comment != "" { | ||||||
|  | 				createIndexSQL += fmt.Sprintf(" COMMENT '%s'", idx.Comment) | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
| 			if idx.Option != "" { | 			if idx.Option != "" { | ||||||
| 				createIndexSQL += " " + idx.Option | 				createIndexSQL += " " + idx.Option | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -142,17 +142,36 @@ func TestSmartMigrateColumn(t *testing.T) { | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestMigrateWithComment(t *testing.T) { | func TestMigrateWithColumnComment(t *testing.T) { | ||||||
| 	type UserWithComment struct { | 	type UserWithColumnComment struct { | ||||||
| 		gorm.Model | 		gorm.Model | ||||||
| 		Name string `gorm:"size:111;index:,comment:这是一个index;comment:this is a 字段"` | 		Name string `gorm:"size:111;comment:this is a 字段"` | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := DB.Migrator().DropTable(&UserWithComment{}); err != nil { | 	if err := DB.Migrator().DropTable(&UserWithColumnComment{}); err != nil { | ||||||
| 		t.Fatalf("Failed to drop table, got error %v", err) | 		t.Fatalf("Failed to drop table, got error %v", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err := DB.AutoMigrate(&UserWithComment{}); err != nil { | 	if err := DB.AutoMigrate(&UserWithColumnComment{}); err != nil { | ||||||
|  | 		t.Fatalf("Failed to auto migrate, but got error %v", err) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestMigrateWithIndexComment(t *testing.T) { | ||||||
|  | 	if DB.Dialector.Name() != "mysql" { | ||||||
|  | 		t.Skip() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	type UserWithIndexComment struct { | ||||||
|  | 		gorm.Model | ||||||
|  | 		Name string `gorm:"size:111;index:,comment:这是一个index"` | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if err := DB.Migrator().DropTable(&UserWithIndexComment{}); err != nil { | ||||||
|  | 		t.Fatalf("Failed to drop table, got error %v", err) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if err := DB.AutoMigrate(&UserWithIndexComment{}); err != nil { | ||||||
| 		t.Fatalf("Failed to auto migrate, but got error %v", err) | 		t.Fatalf("Failed to auto migrate, but got error %v", err) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 s-takehana
						s-takehana