Can't give any more detail on why it happened, didn't seem to actually cause any issue, just got this in an admin email.
[INSERT INTO ost_attachment SET type = 'H', object_id = 11, file_id = 1, inline = 1]
Duplicate entry '1-11' for key 'file_object'<br />
<br />
---- Backtrace ----<br />
#0 (root)/include/mysqli.php(199): osTicket->logDBError('DB Error #1062', '[INSERT INTO o...')<br />
#1 (root)/include/class.orm.php(3455): db_query('INSERT INTOos...', true, true)<br />
#2 (root)/include/class.orm.php(658): MySqlExecutor->execute()<br />
#3 (root)/include/class.thread.php(1189): VerySimpleModel->save()<br />
#4 (root)/include/class.thread.php(1197): ThreadEntry->createAttachment(Array, 'powered-by-osti...')<br />
#5 (root)/include/class.thread.php(1665): ThreadEntry->createAttachments(Array)<br />
#6 (root)/include/class.thread.php(1677): ThreadEntry::create(Array)<br />
#7 (root)/include/class.thread.php(2748): ThreadEntry::add(Array)<br />
#8 (root)/include/class.thread.php(2963): MessageThreadEntry::add(Array, Array)<br />
#9 (root)/include/class.ticket.php(2692): ObjectThread->addMessage(Array, Array)<br />
#10 (root)/include/class.ticket.php(3099): Ticket->postMessage(Array, 'Email')<br />
#11 (root)/include/class.thread.php(571): Ticket->postThreadEntry('M', Array)<br />
#12 (root)/include/class.thread.php(839): Thread->postEmail(Array, Object(ThreadEntry))<br />
#13 (root)/include/class.mailfetch.php(845): ThreadEntry->postEmail(Array)<br />
#14 (root)/include/class.mailfetch.php(917): MailFetcher->createTicket(1)<br />
#15 (root)/include/class.mailfetch.php(997): MailFetcher->fetchEmails()<br />
#16 (root)/include/class.cron.php(25): MailFetcher::run()<br />
#17 (root)/include/class.cron.php(110): Cron::MailFetcher()<br />
#18 (root)/include/api.cron.php(19): Cron::run()<br />
#19 (root)/include/api.cron.php(40): CronApiController->run()<br />
#20 (root)/api/cron.php(23): LocalCronApiController::call()<br />
#21 {main}