Warnung: Unable to resolve table 'users'

Bitte aktiviere JavaScript!
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();
        }
    }

}
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
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));
            }
        }
    }
}
 
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.
 
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).
 
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.
 
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?
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben