|  | @@ -297,20 +297,17 @@ func newIssue(e *xorm.Session, repo *Repository, issue *Issue, labelIDs []int64,
 | 
	
		
			
				|  |  |  		return err
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	var label *Label
 | 
	
		
			
				|  |  | -	for _, id := range labelIDs {
 | 
	
		
			
				|  |  | -		if id == 0 {
 | 
	
		
			
				|  |  | -			continue
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	// During the session, SQLite3 dirver cannot handle retrieve objects after update something.
 | 
	
		
			
				|  |  | +	// So we have to get all needed labels first.
 | 
	
		
			
				|  |  | +	labels := make([]*Label, 0, len(labelIDs))
 | 
	
		
			
				|  |  | +	if err = e.In("id", labelIDs).Find(&labels); err != nil {
 | 
	
		
			
				|  |  | +		return fmt.Errorf("Find all labels: %v", err)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -		label, err = getLabelByID(e, id)
 | 
	
		
			
				|  |  | -		if err != nil {
 | 
	
		
			
				|  |  | -			return err
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +	for _, label := range labels {
 | 
	
		
			
				|  |  |  		if err = issue.addLabel(e, label); err != nil {
 | 
	
		
			
				|  |  |  			return fmt.Errorf("addLabel: %v", err)
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if issue.MilestoneID > 0 {
 |