0
我正在爲我們的遷移功能創建一個sql腳本。我們希望將數據從一個magento實例遷移到另一個(使用純SQL,因爲magento的導入/導出非常有限)。MySQL:在存儲過程中準備好語句 - 參數錯誤1064
我想要動態地改變表的AUTO_INCREMENT值,所以不需要在多個步驟中手動完成,這是一個挑戰。我想將AUTO_INCREMENT值設置爲相應的列+ 1
的電流 - 最大值I製備的下面的存儲過程爲這樣:
DELIMITER $$
CREATE PROCEDURE alter_auto_inc_customer()
BEGIN
SELECT @max := MAX(entity_id)+ 1 FROM customer_entity;
PREPARE stmt FROM 'ALTER TABLE customer_entity AUTO_INCREMENT = ?';
EXECUTE stmt USING @max;
END $$
該命令運行順利。此後的程序應該只是一個簡單的語句來調用:
CALL alter_auto_inc_customer();
當我執行「呼叫」語句來,我收到了1064語法錯誤。這也可能是微不足道的,但我無法弄清楚了我的生活......
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
有沒有人有一個想法是什麼問題?
我需要將它存入一個或多個存儲過程,因爲我需要能夠爲數據庫中的多個表運行類似的語句。
嗨,這是一個解決方法,但我想使用一個過程。正如我所說我需要用多個表執行此操作,並且希望通過一次調用來處理所有操作(而不是多個觸發器) –
我修改了我的答案,添加了一些存儲過程並進行了一些更改。 –
你的程序就像一個魅力。非常感謝你! –