在使用MySQL的觸發器的過程中遇到一個比較蛋疼的問題。
報錯信息如下:

于是查看下數據庫中的triggers觸發器的定義語句:
~~~
mysql> SHOW TRIGGERS\G
*************************** 1. row ***************************
Trigger: items_comment_insert
Event: INSERT
Table: hz_items_comment
Statement: BEGIN
UPDATE hz_items SET comment_count = comment_count + 1 WHERE id = new.item_id;
END
Timing: BEFORE
Created: NULL
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
*************************** 2. row ***************************
Trigger: items_comment_delete
Event: DELETE
Table: hz_items_comment
Statement: BEGIN
UPDATE hz_items SET comment_count = comment_count - 1 WHERE id = old.item_id;
END
Timing: AFTER
Created: NULL
sql_mode: STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: latin1_swedish_ci
2 rows in set (0.00 sec)
~~~
在上面的定義語句中我們看到了`Definer`觸發器的定義者,那是因為在svn測試服務器的連接用戶為luo_account用戶。
**解決方案**
使用shell登錄Linux終端,刪除之前定義的觸發器語句,并執行新的語句。
查看當前連接的用戶:
~~~
mysql> \s
--------------
mysql Ver 14.14 Distrib 5.6.28, for Linux (x86_64) using EditLine wrapper
Connection id: 1339
Current database: www_welltrend
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
~~~
具體執行語句:
~~~
DROP TRIGGER items_comment_insert;
DROP TRIGGER items_comment_delete;
DELIMITER $
CREATE TRIGGER items_comment_insert BEFORE INSERT ON hz_items_comment
FOR EACH ROW BEGIN
UPDATE hz_items SET comment_count = comment_count + 1 WHERE id = new.item_id;
END;
$
DELIMITER ;
DELIMITER $
CREATE TRIGGER items_comment_delete AFTER DELETE ON hz_items_comment
FOR EACH ROW BEGIN
UPDATE hz_items SET comment_count = comment_count - 1 WHERE id = old.item_id;
END;
$
DELIMITER ;
~~~
- 開始
- PHP配置參數的介紹
- PHP代碼優化
- php中的命名空間
- PHP文件上傳類
- PHP文件下載
- PHP驗證碼
- ThinkPHP3.2 框架函數
- A函數:實例化控制器
- C函數:設置和獲取配置參數
- D函數:實例化模型
- F 函數:快速緩存設置和存取
- M函數:例化模型(無需定義模型類)
- L函數:設置和獲取語言變量
- S 函數:緩存設置和存取
- R函數:直接調用控制器的操作方法
- U函數:URL地址生成
- I 函數:安全獲取系統輸入變量
- 日志
- ThinkPHP在關閉調試模式導致函數被緩存
- MySQL觸發器使用時遇到的坑
- PHP常用函數
- 五一回家記錄
- window的PHP開發(wamp)下安裝redis擴展
- Windows下安裝使用Redis
- PHP7新特性
- 利用 phpmailer 類實現隊列發送郵件
- GD 庫圖像處理
- 檢測 PHP 模塊是否開啟
- GD 庫操作一般步驟
- GD 庫繪畫改變字體
- GD 繪制驗證碼
- GD 縮略圖實現
- GD 繪制水印
- 日期時間函數庫
- PHP 函數
- 無限極分類