har ett antal märkliga problem med min Wiki (OpenwikiNG), Den är kopplad mot en MySQL-databas. Får konstiga felmeddelanden tex, när jag ska spara ned en ny wiki-sida eller uppdatera en befintlig, det konstiga är att ändringarna utförs, men får ett felmeddelanden. Börjar fundera om koden verkligen fungerar tillsammans med en MySQL-databas eller om det är felprogrammerat.
Lite utvalda felmeddelanden och kod.
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.22]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM openwiki_attachments, (SELECT att_wrv_name, att_name, MAX(
/ow/owdb.asp, line 1510
else
vQuery = "UPDATE openwiki_attachments" & _
" SET att_wrv_revision = " & vRevision & _
" FROM openwiki_attachments, (SELECT att_wrv_name, att_name, MAX(att_revision) AS LatestRev FROM openwiki_attachments" & _
" WHERE att_wrv_name = '" & Replace(gPage, "'", "''") & "' AND att_deprecated = 0 GROUP BY att_wrv_name, att_name) AS o1" & _
" WHERE o1.att_name = openwiki_attachments.att_name AND att_revision=o1.LatestRev AND openwiki_attachments.att_wrv_name = o1.att_wrv_name;"
end if
[B]conn.execute(vQuery)[/B]
Och ett annat förekommande felmeddelande!
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.22]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(bll_name, '<a href=''http://www.openwiking.com/HelpWiki/?HelpW
/ow/plugins/owplugin_badlinklist.asp, line 125
' // ACTIVE CODE
Function A_ReplaceBadLink(vLink)
Dim szSQL,pText,vURL
' // Do a TSQL version of 'Instr' to see if a banned list item is in this link
If OPENWIKI_DB_SYNTAX = DB_ACCESS Then
szSQL="SELECT * FROM openwiki_badlinklist WHERE (InStr(1,'" & Replace(vLink,"'","''") & "',bll_name,1) > 0);"
ElseIf OPENWIKI_DB_SYNTAX = DB_FIREBIRD then
szSQL="SELECT * FROM openwiki_badlinklist WHERE '" & Replace(vLink,"'","''") & "' LIKE '%' || bll_name || '%';"
else
[U] szSQL="SELECT bll_comment FROM openwiki_badlinklist WHERE (CHARINDEX(bll_name, '" & Replace(vLink,"'","''") & "',1) > 0);"[/U]
End If
oConn.Open OPENWIKI_DB
[B]oRs.Open szSQL,oConn,adOpenForwardOnly[/B]
Fetmarkerade är den rad som den klagar på... håller bokstavligen på att riva av mig håret nu.. SÅ nära att ha en fungerande Wiki, men ändå så långt borta.. :l
PS, den är gjort för att kunna köras på access, oraqle, mssql och MySQL. Och det mesta fungerar! http://wiki.securityfocus.se testa att editera en sida! Sidan uppdateras men du får ett felmeddelande också. Annars får jag lägga Wiki-planerna på hyllan helt enkelt. :bla
Vilken version av MySQL? Versioner tidigare än 4.1 stödjer inte subqueries. På felmeddelandet ser det ut som om det är 4.0.22.
Dessutom är det alltid mer intressant att se den färdiga sql-frågan. Så, skriv ut felande sql-frågor med response.write, så är det lättare att se vad som är fel.
4.x är ett bra, och välspecificerat versionsnummer. :l
Visst är det! x(
Här kommer det jag fick ut av Response.write på den första:
UPDATE openwiki_attachments SET att_wrv_revision = 6 FROM openwiki_attachments, (SELECT att_wrv_name, att_name, MAX(att_revision) AS LatestRev FROM openwiki_attachments WHERE att_wrv_name = '0x80' AND att_deprecated = 0 GROUP BY att_wrv_name, att_name) AS o1 WHERE o1.att_name = openwiki_attachments.att_name AND att_revision=o1.LatestRev AND openwiki_attachments.att_wrv_name = o1.att_wrv_name;
^Det där skrevs ut...^
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.22]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM openwiki_attachments, (SELECT att_wrv_name, att_name, MAX(
/ow/owdb.asp, line 1512
Och utskriften av den nedre:
SELECT bll_comment FROM openwiki_badlinklist WHERE (CHARINDEX(bll_name, 'http://www.openwiking.com/images/DevTeam.jpg',1) > 0);
^Det där skrevs ut...^
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-4.0.22]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(bll_name, '<a href="http://www.openwiking.com/images/DevTeam.j
/ow/plugins/owplugin_badlinklist.asp, line 128
Om det nu är lägre än 4.1, då får du byta ut alla sql-frågor som använder subqueries.
Vad ska jag byta ut dessa mot? Hur, När, Var, Vad. Detta är för avancerat för mig, Vet inte ens vad subqueries är och än mindre vad dess motsvarighet i MySQL skulle vara om min mysql-server är en gammal version... :l
Vad ska jag byta ut dessa mot? Hur, När, Var, Vad.
Till frågor som inte använder subqueries... Det finns inget generellt svar på denna fråga.
Vet inte ens vad subqueries är
Det är när man som del av en SQL-fråga använder en annan SQL-fråga. I ditt fall (det första felet), är det fetstilta en subquery:
UPDATE openwiki_attachments SET att_wrv_revision = 6
FROM openwiki_attachments,
[b](SELECT att_wrv_name, att_name, MAX(att_revision) AS LatestRev
FROM openwiki_attachments
WHERE att_wrv_name = '0x80' AND att_deprecated = 0
GROUP BY att_wrv_name, att_name)[/b] AS o1
WHERE o1.att_name = openwiki_attachments.att_name
AND att_revision=o1.LatestRev AND openwiki_attachments.att_wrv_name = o1.att_wrv_name;
Det andra felet verkar vara att funktionen CHARINDEX() inte ens finns i MySQL. Det skall nog vara INSTR() i MySQL.
nja, det ska tydligen vara LOCATE, och nu fungerar den biten, Nu är det bara att försökta hitta något sätt att skriva om subqueries så att min Mysql-version förstår...
Jo, såg det, blir ju tamig fan nästan blind av alla fnuttar som behövs. :e
Men nu uppstod ett nytt problem några rader ned, Men det börjar arta sig iaf :)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.22]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT MAX(att_wrv_revision) FROM openwiki_attachments o2 WHERE
Dessvärre finns det inget "enkelt" sätt att bara översätta SQL-frågor med subqueries, till frågor utan. Det blir krångligt, och kladdigt, och det enklaste är att se till att använda en vettig (dvs icke apgammal) version av MySQL. :)
Dessvärre finns det inget "enkelt" sätt att bara översätta SQL-frågor med subqueries, till frågor utan. Det blir krångligt, och kladdigt, och det enklaste är att se till att använda en vettig (dvs icke apgammal) version av MySQL. :)
mvh
Hehe, du har så rätt så! Men jag slängde iväg en fråga till webbhotellet, Neno.se som jag använder och fick följande svar precis.
Vi kör idag version 4.0.22 på den server som du ligger på. För
närvarande har vi inga planer på att uppdatera denna server, dock kommer
vi inom den närmaste månaden att erbjuda MySQL 5.0 för dom som vill
kunna använda subqueries osv.
Något exakt datum när vi kommer kunna erbjuda detta har jag inte, men
som sagt någon gång under mars eller april.
Hoppas verkligen att detta är kostnadsfritt, vill ju inte sitta med en apgammal databas som man inte kan ställa frågor på rätt sätt.
261 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25