La gestion des erreurs avec InnoDB n'est pas
      toujours la même que celle spécifiée par les standards ANSI
      SQL. En accord avec les standards ANSI, toute erreur survenant
      durant une commande SQL devrait provoquer l'annulation de
      celle-ci. InnoDB n'annule qu'une partie de la
      commande de temps en temps, ou la totalité de la transaction. La
      liste suivante spécifie la gestion des erreurs de
      InnoDB.
    
          Si vous dépassez l'espace d'un fichier dans l'espace des
          tables, vous obtiendrez l'erreur MySQL 'Table is
          full' et InnoDB annulera la
          requête SQL.
        
          Un deadlock de transaction ou un dépassement de temps dans un
          attente de verrouillage fait annuler toute la transaction à
          InnoDB.
        
          Une erreur de clef dupliquée annule l'insertion de la ligne
          concernée, même dans une requête du genre INSERT
          INTO ... SELECT .... Cela fera probablement en sorte
          que la commande SQL sera annulée si vous n'avez pas
          spécifié l'option IGNORE dans votre
          requête.
        
Une erreur 'row too long' annule la commande SQL.
Les autres erreurs sont la plupart du temps détectées au niveau de la couche MySQL du code et annulent la commande SQL correspondante.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

