我有一个表(让我们称之为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.
这就像他没有找到新的列名并仍然使用旧的错误名称。但我不知道为什么,我到处更改了列名。
感谢您的帮助。
答案 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
请求)运行良好。
对不起,谢谢大家的回答和评论。