db无法识别有效的连接

db无法识别有效的连接

我不太确定这里有什么问题,我只知道数据库工作不正常。
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/

10-11 04:49