Warnung: Unable to resolve table 'users'

Diskutiere Warnung: Unable to resolve table 'users' im Java Basics - Anfänger-Themen Bereich.
R

RezaScript

Hallo,

ich versuche grad MariaDB mit Intellij zum Laufen zu bringen.

Wenn ich String query = "SELECT * FROM users"; verwende, bekomme ich den Error:

Unable to resolve table 'users'
Ich benutze das Programm "HeidiSQL" mit folgenden Daten:
Hostname / IP: 127.0.0.1
Benutzername: root
Passwort: test

Wenn ich die Datenbank dann öffne, sehe ich die Tabelle "users".

Mit Intellij benutze ich exakt dieselben Zugangsdaten und die Verbindung scheint auch zu funktionieren aber die Tabelle "users" kann trotzdem nicht gefunden werden.

Was mache ich da genau falsch?

Mein ganzer Code sieht so aus:

Java:
package ch.yourclick.zt;

import java.sql.*;

public class Database {
    public static void main(String[] args) {
        // Ensure we have mariadb Driver in classpath

        try {
            Class.forName("org.mariadb.jdbc.Driver");
            // create our mysql database connection
            String host = "localhost:3306";
            String dbname = "zt_productions";
            String username = "root";
            String password = "test";
            String url = "jdbc:mariadb://" + host + "/" + dbname + "?user=" + username + "&password=" + password;

            Connection conn = DriverManager.getConnection(url);

            // our SQL SELECT query.
            String query = "SELECT * FROM users";

            System.out.println(query);

            // create the java statement
            Statement st = conn.createStatement();
            ResultSet execute = st.executeQuery(query);

            st.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}
 
R

RezaScript

Die Tabelle habe ich mit HeidiSQL aufgebaut und so sieht sie aus:

11872
 
mihe7

mihe7

Seltsam. Ich habe es gerade mal ausprobiert. Die letzte MariaDB 10.3.14 installiert, Datenbank zt_productions mit Tabelle users angelegt, einen Satz eingefügt. Folgenden Code übersetzt, ausgeführt, liefert wie erwartet das Ergebnis...
Java:
import java.sql.*;

public class Test {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mariadb://maria:3306/zt_productions?user=root&password=test";
        String query = "SELECT * FROM users";

        try(Connection conn = DriverManager.getConnection(url);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery(query)) {
            while (rs.next()) {
                System.out.println(rs.getLong(1));
                System.out.println(rs.getString(2));
                System.out.println(rs.getString(3));
            }
        }
    }
}
 
R

RezaScript

Hmm wieso verwendest du in der URL maria statt localhost?

Wenn ich deinen Code ausführe, bekomme ich den Error:
java.sql.SQLException: No suitable driver found for jdbc:mariadb://maria:3306/zt_productions?user=root&password=test
 
R

RezaScript

Okay ich denke es liegt nicht am Code, sondern an Intellij.

Dein Code funktioniert so bei mir und die Werte in der Datenbank werden mir auch ausgegeben.

Ich dachte zuerst, dass ich die Tabelle users in einer falschen Datenbank abrufe. Das war auch so, denn zuerst war sie auf information_schema eingestellt und ich habe nun zt_productions ausgewählt (siehe Bild unten).

11877

Wenn ich nun auf "Run query in console" klicke, werden mir alle Werte der Tabelle ausgegeben aber weshalb auch immer ich diesen Error bekomme, verstehe ich nicht.
 
mrBrown

mrBrown

Wenn ich nun auf "Run query in console" klicke, werden mir alle Werte der Tabelle ausgegeben aber weshalb auch immer ich diesen Error bekomme, verstehe ich nicht.
Welchen Error bekommst du denn noch?

Das erste Problem lag wohl daran, dass du nicht dein Java-Programm ausgeführt hast, sondern die Query direkt mit IntelliJ - richtige Tabelle auswählen, dann klappt das.

Das zweite, als du den Java-Code ausgeführt hast, lag daran das der Treiber fehlte - Treiber hinzufügen, dann klappt das auch (und natürlich den richtigen Server verwende, also localhost und nicht maria).
 
R

RezaScript

Die Fehlermeldung war (wie oben beschrieben):
Unable to resolve table 'users'
Ich habe keine Ahnung was ich genau gemacht habe aber nun scheint es zu funktionieren und die Fehlermeldung ist weg.

Vielleicht kann ich ungefähr beschreiben was ich gemacht habe:
  • users umbenennt in zt_productions.users
  • Mit dem Cursor auf zt_productions
  • Alt + Enter
  • Irgendwo dann auf Enter geklickt
Keine Ahnung was ich genau ausgewählt hatte und Ctrl + Z funktioniert auch nicht mehr, damit die Fehlermeldung wieder kommt. Schade, hätte mich noch interessiert aber gut, ist erledigt.

Nun muss es auch nicht mehr zt_productions.users heissen, sondern ich kann auch nur users verwenden. Die Fehlermeldung ist definitiv weg.
 
mrBrown

mrBrown

Das was du ausgeführt hast, war nicht der Javacode (zumindest nicht in deinem Screenshot), sondern einfach die Query mit IntelliJ. Und wenn dort eine andere Datenbank ausgewählt ist, ist der Fehler vollkommen logisch.

Hast du überhaupt mal versucht, deinen Java-Code auszuführen?
 
R

RezaScript

Ja habe ich. Es scheint bestens zu funktionieren auch mit der Fehlermeldung!
 
Thema: 

Warnung: Unable to resolve table 'users'

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben