我不太确定这里有什么问题,我只知道数据库工作不正常。
2显示了一些基本的数据结构,表1如下所示
name | inGameID
Azure Plagioclase | 17455
Plagioclase | 18
viscous Pyroxeres| 17460
Onyx Ochre | 1232
表2类似于这样
userName | item
sam | Onyx Ochre
mike | viscous Pyroxeres
dave | azure plagioclase
尝试运行此查询时
SELECT fl.item, od.name
FROM oreData od
JOIN fleetLog fl ON lower(od.name) = lower(fl.item)
order by fl.logID asc
结果是只有红玛瑙赭石的价值。当有更多的数据返回时。T1.name和T2.item具有相同的数据类型。我不知道需要什么样的细节来帮助诊断这个问题,但我想多看一眼。我很乐意提供更多的细节。我很抱歉这么含糊,我从来没有遇到过这样的问题
你们真是一针见血。在这些值的前面或结尾都有额外的空白。解决这个问题的最好办法是什么?
'39';'2';'1';'2001-03-13 00:14:27';'userName';'322';'Vivid Hemorphite
'
'38';'2';'1';'2001-03-13 00:19:28';'userName';'6386';'Azure Plagioclase
'
最佳答案
你们真是一针见血。在这些值的前面或结尾都有额外的空白。解决这个问题的最好办法是什么?
修复应用程序代码,使这些数据不会进入数据库;如果这不可能,则可以在数据库中定义触发器,以便在写入操作期间根据需要删除字符:
CREATE TRIGGER oreData_ins BEFORE INSERT ON oreData FOR EACH ROW
SET NEW.name = TRIM(NEW.name);
CREATE TRIGGER oreData_upd BEFORE UPDATE ON oreData FOR EACH ROW
SET NEW.name = TRIM(NEW.name);
CREATE TRIGGER fleetLog_ins BEFORE INSERT ON fleetLog FOR EACH ROW
SET NEW.item = TRIM(NEW.item);
CREATE TRIGGER fleetLog_upd BEFORE UPDATE ON fleetLog FOR EACH ROW
SET NEW.item = TRIM(NEW.item);
更新现有数据:
UPDATE oreData SET name = TRIM(name);
UPDATE fleetLog SET item = TRIM(item);
关于mysql - mysql db无法识别有效的连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14143541/