dedlfix: MS SQL Server Unicode???

Beitrag lesen

Hi!

Momentan wird nun dieser erste Select angemeckert.
$result_conf = $DBO->query("SELECT * FROM config");
Jetzt weiss ich aber nicht wie man hier den Prefix N unterbringen soll?

Da gar nicht, weil du da ja kein Stringliteral hast.

Handelt es sich dabei immer noch um diese Meldung:

Unicode-Daten in einer Nur-Unicode-Sortierung oder ntext-Daten

Kann es sein, dass du uns hier die Fortsetzung der Meldung unterschlägst, die was von einer Treiberversion erzählt, die mindestens, wenn nicht noch mehr sein muss?

In dem Fall kann es sein, dass du schlechte Karten hast. Es kann aber auch sein, dass der ODBC-Treiber hier weiterhilft. Wie schon gesagt, habe ich da keine konkreten Erfahrung, und rate hier nur etwas rum, was meine nächsten Schritte in solch einem Fall wären.

Was ich auch nicht ganz verstehe: Wenn ich die Verbindung anstatt mit
"new PDO('mssql.." mit "new PDO('odbc." mache, dann habe ich dieses Problem bzw. diese Meldung wegen Unicode nicht.

Sieh an, also doch ein Treiberversionsproblem. Dann also ODBC.

Und dann; ich möchte ja versuchen zweigleisig zu fahren. Also auch weiterhin MySQL zu verwenden wenn gewünscht.
So aber müsste ich ja alle SQL Befehle anders gestalten.

Das ist das Problem bei einer DBMS-Migration. Es ist nämlich nicht einfach damit getan, eine gleichmachende API wie PDO zu verwenden und den Connection-String zu ändern, um ein anderes DBMS ansprechen zu können. PDO vereinheitlicht nur die Dinge, die das DBMS-Handling angehen, also wie Querys abgesetzt und Ergebnisse geholt werden, etc. Wenn du zur Anwendung hin etwas wirklich austasuchbares haben willst, musst du noch eine Schicht einziehen, die die Anwendung komplett von datenbanktechnischen Dingen abkoppelt. Also einen Datenabstraktionslayer im Gegensatz zu einen Datenbankabstraktionslayer. Du sagst also in der Anwendung nur: "Gib mir Daten" und deine Zwischenschicht formuliert die konkrete Abfrage in Richtung DBMS. Und nun kannst du beim DBMS-Wechsel diese Zwischenschicht anpassen. Der Anwendung ist es nun egal, wo die Daten herkommen, ob nun aus MySQL oder MSSQL. Du kannst auch, vielleicht zu Testzwecken, ein paar Dummy-Daten in einem Array vorhalten.

Durch die Zwischschicht erhöhst du zwar insgesamt die Komplexität der Anwendung, hast nun aber austauschbare Teile mit definierten Schnittstellen zwischen ihnen.

Lo!