整理一下自己遇见过的 SQL 各种报错信息及相应解决方法,方便以后查阅,主要平台为 Oracle:
原因:重启 Oracle 服务器时,如果在运行 shutdown 指令关闭数据库的时候意外断开连接,后面想再次进入 Oracle 服务器启动时便可能会遇见如下报错:
sqlplus /nolog
进入 SQL Plus 后,想连接数据库 conn username/password as sysdba
时,会报 Connected to an idle instance.
错误。 startup
启动数据库时,会报 ORA-01012: not logged on
错误。 通过查阅资料,判断报错原因是在关闭数据库意外退出后,ORACLE一直处于锁定状态,不再允许其他操作。
解决:
先关闭ORACLE进程:
ps -ef|grep ora_dbw0_$ORACLE_SID //找到ORACLE进程 kill -9 PID //通过找到的进程PID号kill掉该进程
然后重启ORACLE:
sqlplus /nolog //进入SQL Plus startup //启动ORACLE
最后附上关闭ORACLE的命令说明,以免造成错误的关闭操作:
原因:向表中插入数据时字段个数不匹配,例如
insert into table_1 (?, ?) values (?, ?, ?)
插入值比字段多了一个,则会报该错误
原因:用 select 查询语句时,若同时使用distinct去重与order by排序,就会报该错误,如
select distinct a from table1 where ... order by b;
这是因为 order by 根据 b 列排序时与 distinct 产生冲突,distinct 找不到 b 列。
select distinct a,b from table1 where ... order by b;