我运行我的程序,数据库已连接,然后它给了我两个错误。一句话
'Schema "ROOT" does not exist'
和另一种说法
'Lexical error at line 1, column 8. Encountered: "@"(64), after:"".
以下是两个SQL语句的代码:
private void UpdateJTable() {
String sql ="select idhonscores AS RowNo , Name, Characters, Kills, Deaths, Assists, XPM, CK from honscores";
try {
st = conn.prepareStatement(sql);
rs = st.executeQuery();
table.setModel(DbUtils.resultSetToTableModel(rs));
} catch(Exception e) {
JOptionPane.showMessageDialog(null, e);
}
}
这是第一个错误和
String sql3 ="SELECT "+"@rn:=@rn+1"+" AS Rank, Name, Kills
FROM (Select Name, sum(Kills) as Kills
from honscores group by Name order by Kills DESC) t1,
(SELECT "+"@rn:=0"+") t2;";
是第二个错误
答案 0 :(得分:2)
;create=true
附加到jdbc-url可能有所帮助(如果它不存在,这将创建数据库和模式)。您可以change to a different schema执行:
SET SCHEMA MYSCHEMA;
答案 1 :(得分:0)
有关用户名是默认架构的说法是正确的。如果您未指定用户名,则默认架构将为APP。此架构始终存在。如果以root用户身份连接,则在您在其中创建表之前,不会创建模式“root”。 E.g:
ij> connect 'jdbc:derby:memory:foo;user=root;create=true';
ij> show schemas;
TABLE_SCHEM
------------------------------
APP
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
11 rows selected
ij> create table foo(i int) ;
0 rows inserted/updated/deleted
ij> show schemas;
TABLE_SCHEM
------------------------------
APP
NULLID
ROOT
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
12 rows selected
WRT。表格和列名称中的@:仅当您引用包含@的名称时才允许这样做。 E.g:
ij> create table @T@(@c@ int);
ERROR 42X02: Lexical error at line 1, column 14. Encountered: "@" (64), after : "".
ij> create table "@T@"("@c@" int);
0 rows inserted/updated/deleted
ij> insert into "@T@" values (0),(1),(2);
3 rows inserted/updated/deleted
ij> select * from "@T@";
@c@
-----------
0
1
2
3 rows selected
但请注意,引用名称时,它会区分大小写。因此,在前面的示例中,以下操作失败:
ij> select * from "@t@";
ERROR 42X05: Table/View '@t@' does not exist.
因为在引号中,@ T @和@ t @被认为是不同的名称。