lege kolom van varbinary formaat
In een SQL database is bij een update een aantal kolommen verandert naar een varbinary formaat:
oud
nieuw
Ik krijg nu een foutmelding bij het herstellen van de database.
Quote:
#1054 - Onbekende kolom '0x' in field list
In de insert wordt ",0x," gebruikt voor de betreffende kolom. Moet ik de 0x tussen de komma's geheel verwijderen of moet er iets voor terug komen?
Gewijzigd op 12/12/2022 16:39:32 door J opla
Heb je al een repair geprobeerd?
Gewijzigd op 12/12/2022 16:39:23 door - Ariën -
Ik denk dat iets wat leeg is niet kan repareren, ik probeer alleen vanuit een back up terug te plaatsen.
Maar hoe laad je die backup in?
Met INSERT via phpadmin probeer ik de inhoud er in te zetten.
En hoe ziet je structuur eruit? Als je geen structuur hebt met dat veld, kan je ook niks INSERT'en.
Gewijzigd op 12/12/2022 16:57:19 door - Ariën -
Dus de geheimzinnigheid mag je achterwege laten, dat helpt ook gemakkelijker.
Maar hoe ziet je structuur er dan uit? Heb je die al?
Gewijzigd op 12/12/2022 17:11:33 door - Ariën -
Gewijzigd op 12/12/2022 17:24:31 door j opla
In je INSERT maak ik op dat '0x' een waarde is, en geen tabelnaam.
Daarom raad ik je aan om om de values een single quote te zetten.
Ik snap niet wat je bedoeld, moet ik single quote om de integers en binary zetten? Dus ('1','0xhexgetal','0x',enz...)?
Code (php)
1
2
2
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
VALUES (value1, value2, value3, ...);
Gewijzigd op 12/12/2022 17:50:43 door - Ariën -
geen geldige hexadecimale literal, het proces dat de reservekopie heeft gemaakt, heeft dat niet goed gedaan, of de reservekopie is naderhand gewijzigd.
Als je deze query voert aan MariaDB:
Krijg je de foutmelding:
Dus waarschijnlijk is de backup-tool die je gebruikt fout bezig geweest.
Met een beetje geluk kan je dat fixen door in de backup een zoek-en-vervang actie te doen van 0x naar ''.
Toevoeging op 12/12/2022 19:30:55:
Om strings moeten altijd quotes, anders is het geen string literal. Als je op dezelfde manier van integers een string maakt, zal MySQL / MariaDB impliciet (zonder melding) naar een integer omzetten. Integers en andere numerieke literals hebben geen quotes, dus je kan ze bij nummers gewoon weglaten.
Om hexadecimale byte-reeksen (technisch ook 'strings') die beginnen met 0x, is het niet nodig om quotes te zetten. Wil je toch met quotes werken om waarden van binaire kolommen weer te geven, dan moet je dat weergeven als volgt:
Hexadecimale literals zijn ongevoelig voor hoofd- of kleine letters, het maakt niet uit wat je gebruikt.
0x is een prefix voor binaire gegevens. Maar als er geen gegevens zijn dan is een lege string ('') voldoende voor een varbinary kolom. Alleen 0x is Als je deze query voert aan MariaDB:
Krijg je de foutmelding:
Dus waarschijnlijk is de backup-tool die je gebruikt fout bezig geweest.
Met een beetje geluk kan je dat fixen door in de backup een zoek-en-vervang actie te doen van 0x naar ''.
Toevoeging op 12/12/2022 19:30:55:
J opla op 12/12/2022 17:33:25:
Ik snap niet wat je bedoeld [sic], moet ik single quote om de integers en binary zetten? Dus ('1','0xhexgetal','0x',enz...)?
Om strings moeten altijd quotes, anders is het geen string literal. Als je op dezelfde manier van integers een string maakt, zal MySQL / MariaDB impliciet (zonder melding) naar een integer omzetten. Integers en andere numerieke literals hebben geen quotes, dus je kan ze bij nummers gewoon weglaten.
Om hexadecimale byte-reeksen (technisch ook 'strings') die beginnen met 0x, is het niet nodig om quotes te zetten. Wil je toch met quotes werken om waarden van binaire kolommen weer te geven, dan moet je dat weergeven als volgt:
Hexadecimale literals zijn ongevoelig voor hoofd- of kleine letters, het maakt niet uit wat je gebruikt.
Heel hartelijk bedankt voor de toelichting en de oplossingsrichting, het was inderdaad een kwestie van de 0x voor een lege cel te wijzigen in ''. De andere gegevens hoefden helemaal niet van single quotes te worden voorzien. Na de wijziging werkte de INSERT zoals je zou verwachten en kan ik weer inloggen in mijn site. Nogmaals, Dank voor jouw hulp!