sql >> Database >  >> RDS >> Mysql

kan symbool PreparedStatement niet vinden na JAR-upgrade

com.mysql.jdbc.PreparedStatement is een interne klasse voor het MySQL 5.x JDBC-stuurprogramma. Uw code zou deze niet moeten importeren. Het zou de standaard java.sql.PreparedStatement . moeten gebruiken klas in plaats daarvan.

De pakketnamen zijn gewijzigd in de MySQL 8.x JDBC-stuurprogramma's en dat is de reden dat uw code compilatiefouten begon te geven.

Oplossing:

  1. Corrigeer uw code zodat deze geen MySQL-implementatieklassen importeert. Gebruik de java.sql.* en javax.sql.* klas in plaats daarvan.

  2. Wijzig uw projectafhankelijkheden zodat het MySQL-stuurprogramma JAR geen afhankelijkheid is tijdens het compileren. Als u dat doet, veroorzaakt dit per ongeluk afhankelijkheden van broncode van JDBC-stuurprogramma's worden gemarkeerd als compilatiefouten. Het zal ook voorkomen dat uw IDE onjuiste suggesties doet voor import verklaringen. (Mijn gok is dat de nep-import zo in je codebase is gekomen.)

  3. Als uw code (nog) gebruikmaakt van Class.forName om het JDBC-stuurprogramma te laden, wijzigt u het in java.sql.DriverManager in plaats van; zie javadoc . Op die manier wordt u niet verbrand door een nieuwe wijziging in de naam van de MySQL-stuurprogrammaklasse.



  1. KAN GEEN WEERGAVE OP SCHEMA VERLENEN

  2. Gebruik triggers op overgenomen tabellen om externe sleutels te vervangen

  3. PostgreSQL installeren op OSX for Rails-ontwikkeling

  4. Lead- en Lag-functie in Mysql