如有以下sql:
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)資中免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
T1.limit_user 為account表中查詢出來的值
‘9,8,4’
查詢sql正確查詢結(jié)果應(yīng)為:
不可推薦 ,推銷客戶,推銷客戶
實(shí)際結(jié)果為:
不可推薦
原因:
在mysql中in里面如果是字符串的話,會(huì)自動(dòng)轉(zhuǎn)化成int類型的,內(nèi)部使用了如下方法: CAST('4,3' AS INT)
導(dǎo)致’4,3‘ 變成了4,所以上述查詢sql結(jié)果只有第一個(gè)。
解決方案
FIND_IN_SET('查詢的值(如:1)', '使用逗號(hào)隔開的字符串集合,如:('1,2,3')')
正確的sql
1、DTS數(shù)據(jù)同步報(bào)錯(cuò)
2、源端用戶user1擁有所有database的權(quán)限,包括select權(quán)限
3、使用user1用戶登錄源端MySQL,當(dāng)指定database為database1,select被拒絕
4、從MySQL的物理表文件看,表的.frm和.ibd文件是正常的
5、將報(bào)錯(cuò)的表table1備份為table2,刪除table1,select information_schema.columns、information_schema.tables可執(zhí)行且不報(bào)錯(cuò)
6、將table2重命名為table1,select information_schema.columns、information_schema.tables再次報(bào)一樣的錯(cuò)誤
7、將table1重命名為table2,select information_schema.columns、information_schema.tables可執(zhí)行且不報(bào)錯(cuò)
8、原因判斷
參考:
其他用戶也遇到了與MySQL對象相關(guān)的information_schema.columns、information_schema.tables的select報(bào)錯(cuò),但是涉及的MySQL對象為view,而我們這里為table。
view可以指定definer等,而table1的創(chuàng)建語法中沒有找到這樣的字眼。但是推測以某一種方式與definer相關(guān)聯(lián)。
9、輔證
我們經(jīng)常在運(yùn)行MySQL時(shí)會(huì)出一些錯(cuò)誤,也經(jīng)常被這些錯(cuò)誤搞得暈頭轉(zhuǎn)向。當(dāng)然解決這些問題的首要任務(wù)是找到日志信息。
MySQL的錯(cuò)誤信息是在data目錄下的,且文件名為hostname.err(hostname指的是主機(jī)名),但由于每個(gè)人安裝的環(huán)境不一樣,或你忘記了data目錄的所在位置,你可以通過下面方法查找。
#hostname //獲得主機(jī)名
hostname
#find / -name hostname.err
.....
#cd ...
#vi hostname.err