Mysql
 sql >> Base de données >  >> RDS >> Mysql

impossible de trouver le symbole PreparedStatement après la mise à niveau JAR

com.mysql.jdbc.PreparedStatement est une classe interne au pilote MySQL 5.x JDBC. Votre code ne doit pas l'importer. Il devrait utiliser le standard java.sql.PreparedStatement classe à la place.

Les noms des packages ont changé dans les pilotes MySQL 8.x JDBC, et c'est ce qui a provoqué l'apparition d'erreurs de compilation dans votre code.

Solution :

  1. Corrigez votre code afin qu'il n'importe aucune classe d'implémentation MySQL. Utilisez le java.sql.* et javax.sql.* classe à la place.

  2. Modifiez les dépendances de votre projet afin que le JAR du pilote MySQL ne soit pas une dépendance au moment de la compilation. Faire cela causera tout accidentel les dépendances du code source sur les pilotes JDBC doivent être signalées comme des erreurs de compilation. Cela empêchera également votre IDE de faire des suggestions incorrectes pour import déclarations. (Je suppose que c'est ainsi que la fausse importation est entrée dans votre base de code.)

  3. Si votre code utilise (encore) Class.forName pour charger le pilote JDBC, modifiez-le pour utiliser java.sql.DriverManager Au lieu; voir javadoc . De cette façon, vous ne serez pas brûlé par un autre changement dans le nom de la classe du pilote MySQL.