重命名列名后Oracle无效标识符错误

时间:2015-12-25 11:31:04

标签: java sql oracle spring-data

我有一个表(让我们称之为MY_TABLE)有一个列(让我们称之为COLUMN_A)。

我使用spring Data在该表上执行CRUD操作。特别是,我使用save接口中的org.springframework.data.repository.CrudRepository方法将一些日志记录数据插入到该表中。

我的问题是,我今天早上注意到,在创建MY_TABLE(使用SQL脚本)时,我输入了一个拼写错误并写了COLUM_NA而不是COLUMN_A作为列名。

所以我ALTER对表进行了重命名,然后我将Java实体类MyTableEntity中的列名重命名为getter / setter方法。

从那时起,当我执行我的Java应用程序时,我遇到了这个Oracle错误:

ORA-00904: "MYTABLEENT0_"."COLUMN_A" : invalid identifier.

这就像他没有找到新的列名并仍然使用旧的错误名称。但我不知道为什么,我到处更改了列名。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果仔细查看错误消息,您会注意到有关如何显示column_name的信息。

ORA-00904: "MYTABLEENT0_"." COLUMN_A " : invalid identifier.
                           ^         ^

那里有流氓空间。可能您的实际列名为COLUMN_A,没有空格。 Oracle将双引号中的标识符视为文字。因此" COLUMN_A " != "COLUMN_A"

您可以通过编辑配置文件来解决此问题。

答案 1 :(得分:0)

好吧,伙计们,我很困惑。我刚刚意识到我在错误的数据库上执行了我的public ActionResult notCk_Pk(String FirstName,String LastName,int Salary,String Gender) { l.Add(FirstName); l1.Add(LastName); i = Salary + i; l2.Add(Gender); string ConnectionString = ConfigurationManager.ConnectionStrings["EmployeeContext"].ConnectionString; using (SqlConnection connection = new SqlConnection("data source=.; database=Srivatsava; integrated security=SSPI")) { connection.Open(); SqlCommand com = new SqlCommand("insertinto", connection); com.CommandType = CommandType.StoredProcedure; com.Parameters.AddWithValue("@FirstName", FirstName); com.Parameters.AddWithValue("@LastName",LastName); com.Parameters.AddWithValue("@Salary", Salary); com.Parameters.AddWithValue("@Gender", Gender); com.ExecuteNonQuery(); connection.Close(); } var todoListsResults = l.Count(); var t1=l1.Count(); var t3=l2.Count(); var aaData=new{ todoListsResults, t1, i, t3 }; return Json(aaData, JsonRequestBehavior.AllowGet); //Console.WriteLine(FirstName + "" + LastName + "" + Salary + "" + Gender); //return Content("<script language='javascript' type='text/javascript'>alert("+FirstName+");</script>"); } 请求(我有很多数据库和大致相同的表)。

所以它的逻辑是它在插入时仍然使用错误的名称,因为那个(好)数据库中的列名仍然是错误的。在好的数据库中ALTER表后,我的应用程序(尤其是我的ALTER请求)运行良好。

对不起,谢谢大家的回答和评论。