看webman 日志一直提示这个报错。不知道是什么原因。
这样我也不知道你是啥,就懂是mysql的问题,你具体下,代码什么的,贴下
Db::table('apps')->select('app_key','app_passwd','app_status','app_limit','uid','allow_ips')->where('app_key', $app_key)->first(); 就是偶尔会出现这个报错。
这个报错的时候,然后写个日志,打印下,mysql的原生sql语句,然后去数据库执行下,就明白是什么问题了,一般是where的$app_key的问题吧
where app_key = AEocccqrl3335UF4GtbXEMzbrjkSub1Fjo limit 1 报错的SQL 语句里面 app_key 都没带单引号。但是我测试的时候每次传递过去的值都是一样的。很奇怪。
app_key
->where('app_key', $app_key)->first(); 改成 ->where('app_key','"'. $app_key.'"')->first(); 这样?正常where都会加上单引号的啊,你是用那个db插件包的
用的webman 自带的那个。
你用tp的ThinkORM 试下,https://www.workerman.net/doc/webman/db/thinkorm.html
我感觉这个报错可能是出在mariadb 上,是mariadb 主动关闭了连接。
你换成mysql试下
好的,多谢。我这边试下。
MariaDB? 如果是的话,换MySQL
好的,多谢,我试下。
Connection was killed 應該優先看數據庫側的日誌吧?
另外配合你說的場景,偶爾出現,是否長時間沒操作被數據庫kill了鏈接? webman上是長連接來的,但數據庫有個自動終端閒置鏈接,比方連上後一直沒操作,然後數據庫側就kill了。當需要查詢時候使用被kill的鏈接就會出錯。 我記得之前webman是通過定時器執行select 1來保活的。
这样我也不知道你是啥,就懂是mysql的问题,你具体下,代码什么的,贴下
Db::table('apps')->select('app_key','app_passwd','app_status','app_limit','uid','allow_ips')->where('app_key', $app_key)->first(); 就是偶尔会出现这个报错。
这个报错的时候,然后写个日志,打印下,mysql的原生sql语句,然后去数据库执行下,就明白是什么问题了,一般是where的$app_key的问题吧
where
app_key
= AEocccqrl3335UF4GtbXEMzbrjkSub1Fjo limit 1 报错的SQL 语句里面 app_key 都没带单引号。但是我测试的时候每次传递过去的值都是一样的。很奇怪。->where('app_key', $app_key)->first(); 改成 ->where('app_key','"'. $app_key.'"')->first(); 这样?正常where都会加上单引号的啊,你是用那个db插件包的
用的webman 自带的那个。
你用tp的ThinkORM 试下,https://www.workerman.net/doc/webman/db/thinkorm.html
我感觉这个报错可能是出在mariadb 上,是mariadb 主动关闭了连接。
你换成mysql试下
好的,多谢。我这边试下。
MariaDB? 如果是的话,换MySQL
好的,多谢,我试下。
Connection was killed
應該優先看數據庫側的日誌吧?
另外配合你說的場景,偶爾出現,是否長時間沒操作被數據庫kill了鏈接?
webman上是長連接來的,但數據庫有個自動終端閒置鏈接,比方連上後一直沒操作,然後數據庫側就kill了。當需要查詢時候使用被kill的鏈接就會出錯。
我記得之前webman是通過定時器執行select 1來保活的。