Coldfusion MySQL, FUNCTION personalwebsitecoldfusion.AddUser не существует

Думаю, пришло время попросить помощи с этой ошибкой, так как я перепробовал все, что мог. По сути, я создал в MySQL хранимую процедуру под названием AddUser, а имя базы данных — PersonalWebsiteColdfusion. Я могу гарантировать вам, что он существует. Если это полезно, я использую Windows IIS 7.5 и OpenBD для Coldfusion. Также просто чтобы уточнить, что я создал и проверил источник данных в веб-администраторе OpenBD. MySQL - это версия 5.6, и это 64-разрядная среда. Дело в том, что он работает с cfquery, но я бы предпочел использовать cfstoredproc, если это возможно. Ошибка в основном то, что написано в заголовке. Надеюсь, кто-то может помочь.

Обновлено, чтобы дать соответствующий код процедуры.

<cfstoredproc datasource="PersonalWebsiteCF" procedure="AddUser" returnCode="yes">
    <cfprocparam cfsqltype="cf_sql_varchar" value="#form.txtFirstName#" type="in" variable="strFirstName" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="#form.txtLastName#" type="in" variable="strLastName" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="#form.txtEmail#" type="in" variable="strEmail" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="#form.txtUsername#" type="in" variable="strUsername" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="#form.txtPassword#" type="in" variable="strPassword" />
    <cfprocparam cfsqltype="cf_sql_timestamp" value="#Now()#" type="in" variable="strDateJoined" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="#cgi.remote_addr#" type="in" variable="strIP" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="Member" type="in" variable="strMembershipStatus" />
    <cfprocparam cfsqltype="cf_sql_varchar" value="No" type="in" variable="strActive" />
    <cfprocparam cfsqltype="cf_sql_integer" value="0" type="out" variable="strUserID" />
</cfstoredproc>

Возможно, сама хранимая процедура также будет полезна:

DELIMITER //
CREATE PROCEDURE AddUser (

IN strFirstName varchar(50), 
IN strLastName varchar(50),
IN strEmail varchar(50),
IN strUsername varchar(50),
IN strPassword varchar(150),
IN strDateJoined datetime,
IN strIP varchar(50),
IN strMembershipStatus varchar(50),
IN strActive varchar(50),
OUT strUserID int

) 

BEGIN

INSERT INTO tblUsers (FirstName, LastName, Email, Username, Password, DateJoined, IP,  MembershipStatus, Active) VALUES (strFirstName, strLastName, strEmail, strUsername, strPassword, strDateJoined, strIP, strMembershipStatus, strActive);

SET strUserID = LAST_INSERT_ID();

END//;

Я пробовал разные вещи с тех пор, как впервые опубликовал, но до сих пор не нашел решения.

Спасибо

Дуглас


person Douglas    schedule 25.03.2014    source источник
comment
Ваша попытка вызвать процедуру была бы полезной.   -  person Dan Bracuk    schedule 25.03.2014
comment
В дополнение к проверке разрешений, а) работают ли какие-либо хранимые процедуры б) выдает ли она ошибку каждый раз (были некоторые спорадические проблемы в более ранних версиях) и c) какие-либо изменения, если вы укажете префикс имени базы данных, т.е. dbname.procedureName ?   -  person Leigh    schedule 30.08.2015


Ответы (1)


Убедитесь, что в разделе Дополнительные настройки в разделе Администрирование, где вы создали DSN, выбран параметр Хранимая процедура.

Кроме того, обходной путь, хотя и не решает исходную проблему, заключается в вызове SP через запрос.

<cfquery name="SomeName" dataSource="SOME_DSN">
    call Your_SP #Arg_1#,#Arg_2#
</cfquery>
person CFML_Developer    schedule 26.03.2014