이 내 로컬 컴퓨터에서 잘 작동하지만 생산에, 그것은 나에게 위의 오류를 제공 내 저장 프로 시저 :MYSQL 오류 1414 - 오류 만들 나던 의미
: 그것은 OUT 매개 변수, 마지막에 대해 불평 MySqlCommand command = new MySqlCommand("insert_projects", dbcontroller.conn);
command.CommandType = System.Data.CommandType.StoredProcedure;
// Add parameters for the insert_projects STORED PROC
command.Parameters.Add(new MySqlParameter("userName", SessionBag.Current.UserName));
command.Parameters["@userName"].Direction = System.Data.ParameterDirection.Input;
command.Parameters.Add(new MySqlParameter("projectCode", MySqlDbType.Int64));
command.Parameters["@projectCode"].Direction = System.Data.ParameterDirection.Output;
command.Parameters.Add(new MySqlParameter("projectName", model.projectName));
command.Parameters.Add(new MySqlParameter("projectDescription", model.projectDescription));
command.Parameters.Add(new MySqlParameter("projectCurrency", model.projectCurrency));
command.Parameters.Add(new MySqlParameter("projectBudget1", model.projectBudget1));
command.Parameters.Add(new MySqlParameter("projectBudget2", model.projectBudget2));
command.Parameters.Add(new MySqlParameter("projectEndDate", model.projectEndDate));
command.Parameters.Add(new MySqlParameter("expectedDelivDate", model.expectedDelivDate));
command.Parameters.Add(new MySqlParameter("projectMessageForBidder", model.projectMessageForBidder));
try
{
command.ExecuteNonQuery();
TempData["projectCode"] = (Int64)command.Parameters["?projectCode"].Value;
TempData["frompage"] = "AddProject";
dbcontroller.conn.Close();
return RedirectToAction("MyProjectsHeaderSR", "Projects");
}
왜 이것에 대해 불평한다 : 아래
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_projects`(
IN userName varchar(20),
IN projectName text,
IN projectDescription text,
IN projectCurrency text,
IN projectBudget1 double,
IN projectBudget2 double,
IN projectEndDate DATETIME,
IN expectedDelivDate DATETIME,
IN projectMessageForBidder text,
OUT projectCode bigint)
BEGIN
DECLARE
l_project_code bigint;
insert into projects
(PROJECT_CODE,
SR_USER_NAME ,
PROJECT_NAME,
PROJECT_DESCRIPTION,
PROJECT_CURRENCY,
PROJECT_BUDGET1 ,
PROJECT_BUDGET2 ,
PROJECT_STATUS,
PROJECT_END_DATE,
PROJECT_PAID,
EXPECTED_DELIV_DATE,
PROJECT_MESSAGE_FOR_BIDDER,
PROJECT_CREATION_DATE,
PROJECT_UPDATE_DATE)
values
(
0,
userName,
projectName,
projectDescription,
projectCurrency,
projectBudget1,
projectBudget2,
'Active',
projectEndDate,
null,
expectedDelivDate,
projectMessageForBidder,
NOW(),
NOW());
SELECT LAST_INSERT_ID() into l_project_code;
SET projectCode = l_project_code;
END
그 매개 변수를 설정, 내 C# 코드인가? 내 로컬 컴퓨터가 잘 작동합니다. "projects"테이블에는 BIGINT 자동 증가로 설정된 project_code라는 필드가 있습니다. 나머지 필드는 일반 데이터 유형입니다.
좋아, 나는 .. 변수를 만들었으며 그것은 ..에서 동일한 오류를 통과
if (dbcontroller.DBConnection())
{
Int64 projectCode = 0;
MySqlCommand command = new MySqlCommand("insert_projects", dbcontroller.conn);
command.CommandType = System.Data.CommandType.StoredProcedure;
// Add parameters for the insert_projects STORED PROC
command.Parameters.Add(new MySqlParameter("userName", SessionBag.Current.UserName));
command.Parameters["@userName"].Direction = System.Data.ParameterDirection.Input;
command.Parameters.Add(new MySqlParameter("projectCode", projectCode));
command.Parameters["@projectCode"].Direction = System.Data.ParameterDirection.Output;
그것은 여전히 나던 일
로컬 컴퓨터가 프로덕션 컴퓨터보다 최신 버전의 MySQL을 실행하고 있습니까? 5.5.3에서 수정 된 관련 버그가있었습니다. –
예. 5.5.17. 실행 중입니다. 프로덕션 박스에서 버전을 구하려고 노력하고 있습니다.하지만 다음 호스팅 제공 업체는 기다리고 있습니다 .- (.. 나는 그들이 5.5.17을 실행하고 있는지 의심 스럽습니다. 이 버그 수정에 대한 링크를 제공해 줄 수 있습니까? –
http://dev.mysql.com/doc/refman/5.5/en/news-5-5-3.html - "이전에 준비된 CALL 문 ..."섹션을 확인하십시오. –