2013-06-26 57 views
0

我正在使用MySQL:5.1.69使用轉義數據庫名稱調用MySQL存儲過程

我創建了存儲過程並多次調用它們。在這種情況下,我似乎遇到了與模式名稱中的轉義字符有關的障礙。

我們的MySQL數據庫/模式被命名爲這樣:www.company.com

由於這一點,我們必須始終逃脫數據庫名是這樣的:`www.company.com`.table_name

我已經MySQLWorkbench中創建從一個過程

CREATE PROCEDURE usp_backfill_data 
(p_var1 INT(11) 
,p_var2 DATETIME) 
BEGIN 
/*do lots of work here*/ 
END 

並且從MySQL Workbench中我可以調用以下程序:

use `www.company.com`; 
CALL usp_backfill_data(5000, '2012-01-01'); 

在這些情況下,該過程完全按預期工作。

然而,當我嘗試從命令行調用過程:

%> mysql -uuser -ppassword -Dwww.company.com -e "CALL usp_backfill_data(5000, '2012-01-01');" 

或當我嘗試

%> mysql -uuser -ppassword -e "CALL \`www.company.com\`.usp_backfill_data(5000, '2012-01-01');" 

或當我登錄到mysql命令行及用途:

mysql> use `www.company.com`; 
mysql> CALL usp_backfill_data(5000, '2012-01-01'); 

總是得到以下錯誤或:

ERROR 1305 (42000) at line 1: PROCEDURE www.company.com.usp_backfill_data does not exist 

我希望有一些超級明顯的東西,我在這裏俯瞰。

非常感謝您的寶貴時間

+0

你從'show procedure status'中得到了什麼? – ethrbunny

回答

1

要在命令行中使用逃脫數據庫名稱雙引號

$ mysql -uuser -ppassword -D"www.company.com" -e "CALL usp_backfill_data(5000, '2012-01-01');" 
          ^   ^

其他兩種方法

$ mysql -uuser -ppassword -e "CALL \`www.company.com\`.usp_backfill_data(5000, '2012-01-01');" 

$ mysql -uuser -ppassword 
mysql> USE `www.company.com`; 
Database changed 
mysql> CALL usp_backfill_data(5000, '2012-01-01'); 

對我來說就好了

+0

感謝您花時間回覆。 我已經嘗試了建議的方法,它仍然無法正常工作。這讓我認爲它必須是一個權限問題。 我正在回答這個問題,因爲peterm證明問題不在於我如何稱呼產品 –

相關問題