我在编写一个java程序来运行aurora数据库上的sql查询时遇到了问题。
我知道我的数据库名是goodnameofdb。
我运行以下命令:aws rds descripe db instances | grep dbinstanceidentifier
我看到了:
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb"
"ReadReplicaDBInstanceIdentifiers": [],
"DBInstanceIdentifier": "goodnameofdb-us-west-2b"
我知道我的极光数据库的地址。我运行这个命令:aws rds descripe db instances | grep goodnameofdb-us-west-2b.def123456
我看到了:
“地址”:“goodnameofdb-us-west-2b.def123456.us-east-2.rds.amazonaws.com”
我的java程序编译。我的驱动程序也在正确的目录中。
我有一个java程序,代码如下:
import java.sql.*;
class MysqlCon{
public static void main(String args[]){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://goodnameofdb-us-west-2b.abcdef123456.us-east-2.rds.amazonaws.com:3306/goodnameofdb","jdoe","securepassword");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("show tables");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
con.close();
}catch(Exception e){ System.out.println(e);}
}
}
当我运行编译的程序时,它不工作。我看到这个错误:
com.mysql.jdbc.exceptions.mysqlsyntaxerrorexception:未知数据库'goodnameofdb'
我从一个ec-2示例运行java程序,该示例与aurora数据库所在的vpc相同(我希望程序能够连接到aurora数据库并进行身份验证。我的连接jdbc连接字符串有什么问题?或者为什么我会犯这个错误?
更新:当我删除字符串“:3306/”部分后的“goodnameofdb”并重新编译程序时,运行程序时会出现错误。我收到的错误是
java.sql.sqlexception:未选择数据库
因此,我认为数据库名称必须存在。我的awscli命令似乎告诉我名称是正确的。
2条答案
按热度按时间gab6jxml1#
似乎数据库“goodnameofdb”不存在。你可以从mysql公共线查询。
mysql -hgoodnameofdb-us-west-2b.def123456.us-east-2.rds.amazonaws.com -ujdoe -psecurepassword; show databases;
如果goodnameofdb不存在,则需要创建一个名为goodnameofdb的数据库。mysql> create DATABASE goodnameofdb;
然后,再试一次。我们的团队也使用aurora,aurora与mysql兼容。
rks48beu2#
当你创建极光星团时,你提到
database-name
姓名和master-user
以及master-user-password
. 这里的数据库是指默认的mysql数据库(也称为schema
有时)而不是您的db集群标识符(在您的示例“goodnameofdb”中)。在您的例子中,您创建的默认数据库可能没有命名
goodnameofdb
或者您没有显式地提供一个,从而使aurora为您创建一些默认数据库。不能使用aws cli获取数据库示例的数据库名称。使用主用户凭据,通过mysql cli(或类似的东西)连接到db,并列出数据库(
show databases;
)在你的极光星团里。我很肯定你在尝试使用一个不存在的mysql数据库。