over de MySQL Command-Line Client
mysql (van MariaDB 10.4.6, ook wel mariadb genoemd) is een eenvoudige SQL shell (met GNU readlinecapabilities). Het ondersteunt interactief en niet-interactief gebruik. Bij interactief gebruik worden queryresultaten gepresenteerd in een ASCII-tabelformaat. Wanneer het niet-interactief wordt gebruikt (bijvoorbeeld als filter), wordt het resultaat gepresenteerd in intab-gescheiden formaat. Het uitvoerformaat kan worden gewijzigd met behulp van commando-opties.
Als u problemen heeft door onvoldoende geheugen voor grote resultaatsets, gebruik dan de optie--quick
., Dit dwingt mysql om de resultaten van de server een rij tegelijk op te halen in plaats van de volledige result set op te halen en het in het geheugen te bufferen voordat het wordt weergegeven. Dit wordt gedaan door de result set terug te geven met behulp van de mysql_use_result()
C API functie in de library/server in plaats van mysql_store_result()
.
het gebruik van mysql is heel eenvoudig. Aanroepen vanaf de prompt van uw commando interpreteert als volgt:
mysql db_name
of:
mysql --user=user_name --password=your_password db_name
Typ een SQL statement, eindig met”;”, \g, of \G en druk op Enter.,
Typing Control-C zorgt ervoor dat mysql probeert het huidige statement te stoppen. Als dit niet kan worden gedaan, of Control-C opnieuw wordt getypt voordat het statement wordt uitgeschakeld, stopt mysql.
U kunt SQL-statements als volgt uitvoeren in een scriptbestand (batchbestand):
mysql db_name < script.sql > output.tab
vanaf MariaDB 10.4.6, mariadb
is beschikbaar als symlink naar mysql
.
van MariaDB 10.5.2 is mysql
de symbolische koppeling, en mariadb
de binaire naam.,
het Gebruik van mysql
dit commando gebruiken mysql
en de algemene syntax is:
mysql <options>
Opties
mysql
ondersteunt de volgende opties:
Optie | Beschrijving |
---|---|
-? , --help |
Display this help and exit., |
-I , --help |
Synonym for -? |
--abort-source-on-error |
Abort ‘source filename’ operations in case of errors. |
--auto-rehash |
Enable automatic rehashing. This option is on by default, which enables database, table, and column name completion. Use --disable-auto-rehash , --no-auto-rehash or skip-auto-rehash to disable rehashing., Dat zorgt ervoor dat mysql sneller start, maar je moet het rehash commando geven als je naamvoltooiing wilt gebruiken. Om een naam in te vullen, voert u het eerste deel in en drukt u op Tab. Als de naam ondubbelzinnig is, maakt mysql het af. Anders kunt u opnieuw op Tab drukken om de mogelijke namen te zien die beginnen met wat u tot nu toe hebt getypt. Voltooiing vindt niet plaats als er geen standaarddatabase is. |
-A , --no-auto-rehash |
geen automatische herhashing. Men moet ‘rehash’ gebruiken om tabel en veld voltooiing te krijgen., Dit geeft een snellere start van mysql en schakelt rehashing op reconnect. |
--auto-vertical-output |
automatisch overschakelen naar verticale uitvoermodus als het resultaat groter is dan de terminalbreedte. |
-B , --batch |
resultaten Afdrukken Met tab als kolomscheidingsteken, met elke rij op een nieuwe regel. Met deze optie gebruikt mysql het geschiedenisbestand niet. Batch-modus resulteert in niet-tabulaire uitvoerformaat en ontsnappen van speciale tekens., Escaping kan uitgeschakeld worden door de raw-modus te gebruiken; zie de beschrijving voor de --raw optie. (Activeert --silent .) |
--binary-mode |
standaard is ASCII ‘\0’ niet toegestaan en ‘\r\n’ wordt vertaald naar ‘\n’. Deze schakelaar schakelt beide functies uit, en schakelt ook het ontleden van alle clientcommando ’s uit, behalve \C en DELIMITER, in niet-interactieve modus (voor input doorgeleid naar mysql of geladen met behulp van de’ source ‘ opdracht). Dit is nodig bij het verwerken van uitvoer van mysqlbinlog die blobs kunnen bevatten., |
--character-sets-dir=name |
Directory for character set files. |
--column-names |
Write column names in results. (Defaults to on; use --skip-column-names to disable.) |
--column-type-info |
Display column type information. |
-c , --comments |
Preserve comments. Send comments to the server. The default is --skip-comments (discard comments), enable with --comments ., |
-C , --compress |
comprimeer alle informatie die tussen de client en de server wordt verzonden als beide compressie ondersteunen. |
--connect-expired-password |
laat de server weten dat deze client bereid is om verlopen wachtwoordsandbox-modus af te handelen, zelfs als --batch was opgegeven. Van MariaDB 10.4.3. |
--connect-timeout=num |
aantal seconden voor verbindingstijd. Standaard op nul., |
-D , --database=name |
Database to use. |
-# , --debug |
On debugging builds, write a debugging log. A typical debug_options string is d:t:o,file_name . The default is d:t:o,/tmp/mysql.trace . |
--debug-check |
Check memory and open file usage at exit. |
-T , --debug-info |
Print some debug info at exit., |
--default-auth=plugin |
te gebruiken standaard plugin voor authenticatie aan de clientzijde. |
--default-character-set=name |
Stel de standaard tekenset in. Een veelvoorkomend probleem dat kan optreden wanneer het besturingssysteem utf8 of een andere multibyte-tekenset gebruikt, is dat de uitvoer van de MySQL-client onjuist is geformatteerd, vanwege het feit dat de MariaDB-client standaard de latin1-tekenset gebruikt. U kunt dergelijke problemen meestal oplossen door deze optie te gebruiken om de client te dwingen om de systeemkarakterset te gebruiken., Indien ingesteld op auto wordt de tekenset uit de client-omgeving gehaald (LC_CTYPE op Unix). |
--defaults-extra-file=file |
lees dit bestand nadat de Globale bestanden zijn gelezen. Moet worden gegeven als de eerste optie. |
--defaults-file=file |
lees alleen standaardopties uit het gegeven bestand. Moet worden gegeven als de eerste optie. |
--defaults-group-suffix=suffix |
naast de gegeven groepen, lees ook groepen met dit achtervoegsel., |
--delimiter=name |
te gebruiken scheidingsteken. De standaard is de puntkomma (“;”). |
-e , --execute=name |
commando uitvoeren en afsluiten. Schakelt --force en geschiedenisbestand uit. Het standaard uitvoerformaat is zoals dat geproduceerd met --batch . |
-f , --force |
doorgaan, zelfs als we een SQL-fout krijgen. Stelt --abort-source-on-error in op 0., |
-h , --host=name |
Connect to host. |
-H , --html |
Produce HTML output. |
-U , --i-am-a-dummy |
Synonym for option --safe-updates , -U . |
-i , --ignore-spaces |
Ignore space after function names., Hiermee kan men spaties hebben (inclusief tab-tekens en nieuwe regeltekens) tussen functienaam en’ (‘. Het nadeel is dat hierdoor ingebouwde functies gereserveerde woorden worden. |
--init-command=str |
uit te voeren SQL-opdracht bij het verbinden met de MariaDB-server. Wordt automatisch opnieuw uitgevoerd bij het opnieuw verbinden. |
--line-numbers |
schrijf regelnummers voor fouten. (Standaard aan; gebruik --skip-line-numbers om uit te schakelen.,) |
--local-infile |
lokale mogelijkheid voor het laden van gegevensbestand inschakelen of uitschakelen. Zonder waarde schakelt de optie lokaal in. De optie kan gegeven worden als--local-infile=0 of --local-infile=1 om lokaal expliciet uit te schakelen of in te schakelen. Het inschakelen van lokaal heeft geen effect als de server het ook niet ondersteunt. |
--max-allowed-packet=num |
de maximale pakketlengte om naar of van de server te ontvangen. De standaard is 16MB, de maximale 1GB., |
--max-join-size=num |
automatische limiet voor rijen in een samenvoeging bij gebruik van --safe-updates . Standaard is 1000000. |
-G , --named-commands |
activeer benoemde opdrachten. Benoemde commando ’s betekenen MySQL’ s interne commando ‘ s (zie hieronder) . Indien ingeschakeld, kunnen de benoemde commando ‘ s worden gebruikt vanaf elke regel van de query, anders alleen vanaf de eerste regel, voordat een enter. Lange-formaat commando ’s zijn toegestaan, niet alleen korte-formaat commando’ s., Bijvoorbeeld, quit en \q worden beide herkend. Uitschakelen met --disable-named-commands . Deze optie is standaard uitgeschakeld. |
--net-buffer-length=num |
de buffergrootte voor TCP/IP-en socket-communicatie. Standaard is 16KB. |
-b , --no-beep |
pieptoon uitschakelen bij fout. |
--no-defaults |
lees geen standaardopties uit een optiebestand. Moet worden gegeven als de eerste optie., |
-o , --one-database |
negeer statements, behalve die welke voorkomen terwijl de standaarddatabase degene is die op de opdrachtregel wordt genoemd. Deze filtering is beperkt en alleen gebaseerd op GEBRUIKSVERKLARINGEN. Dit is handig voor het overslaan van updates naar andere databases in het binaire log. |
--pager |
te gebruiken Pager om resultaten weer te geven (alleen Unix). Als u geen optie opgeeft, wordt de standaard pager overgenomen van uw env variabele PAGER. Geldige pagers zijn minder, meer, kat, enz. Zie ook interactieve help (\h)., Deze optie werkt niet in batchmodus. Uitschakelen met --disable-pager . Deze optie is standaard uitgeschakeld. |
-p , --password |
wachtwoord om te gebruiken bij het verbinden met de server. Als u het korte optieformulier (-p) gebruikt, kunt u geen ruimte hebben tussen de optie en het wachtwoord. Als u de wachtwoordwaarde weglaat na de --password of -p optie op de commandoregel, vraagt mysql om een. Het opgeven van een wachtwoord op de opdrachtregel moet als onveilig worden beschouwd., U kunt een optiebestand gebruiken om te voorkomen dat u het wachtwoord op de opdrachtregel geeft. |
--plugin-dir=name |
map voor plugins aan de clientzijde. | -P , --port=num |
poortnummer te gebruiken voor verbinding of 0 voor standaard, in volgorde van voorkeur, mijn.cnf, $MYSQL_TCP_PORT,/etc / services, ingebouwde standaard (3306). |
--print-defaults |
druk de lijst met programmeerargumenten af en sluit af. Moet worden gegeven als de eerste optie., |
--progress-reports |
voortgangsrapporten ophalen voor lang lopende opdrachten (zoals ALTER TABLE). (Standaard aan; gebruik --skip-progress-reports om uit te schakelen.) |
--prompt=name |
Stel de MySQL-prompt in op deze waarde. Zie opdracht prompt voor opties. |
--protocol=name |
het te gebruiken protocol voor verbinding (tcp, socket, pipe, geheugen). |
-q , --quick |
bewaar het resultaat niet, print het rij voor rij af., Dit kan de server vertragen als de uitvoer wordt onderbroken. Gebruikt geen geschiedenisbestand. |
-r , --raw |
voor tabeluitvoer maakt” boxing ” rond kolommen het mogelijk om de ene kolomwaarde van de andere te onderscheiden. Voor niet-tabulaire uitvoer (zoals wordt geproduceerd in batchmodus of wanneer de optie --batch of --silent wordt gegeven), worden speciale tekens in de uitvoer weggelaten zodat ze gemakkelijk kunnen worden geïdentificeerd., Newline, tab, NUL en backslash worden geschreven als \n , \t , \0 , en . De --raw optie schakelt dit teken uit om te ontsnappen. |
--reconnect |
opnieuw verbinden als de verbinding verbroken wordt. Deze optie is standaard ingeschakeld. Uitschakelen met --disable-reconnect of skip-reconnect ., |
-U , --safe-updates |
staan alleen die statements bijwerken en verwijderen toe die aangeven welke rijen moeten worden gewijzigd met behulp van sleutelwaarden. Als u deze optie in een optiebestand hebt ingesteld, kunt u deze overschrijven met --safe-updates op de commandoregel. Zie de optie — safe-updates gebruiken voor meer informatie. |
--secure-auth |
weiger client te verbinden met server als het oude (pre-MySQL4.1.1) protocol gebruikt. Standaard false (In tegenstelling tot MySQL sinds 5,6, die standaard true is)., |
--select-limit=num |
automatische limiet voor selecteren bij gebruik van –safe-updates. Standaard 1000. |
--server-arg=name |
stuur ingebedde server dit als een parameter. |
--shared-memory-base-name=name |
de naam van het gedeelde geheugen voor Windows-verbindingen die gedeeld geheugen gebruiken met een lokale server (gestart met de optie ‘–shared-memory’). Hoofdlettergevoelig. |
--show-warnings |
waarschuwingen tonen na elk statement. Geldt voor interactieve en batch-modus., |
--sigint-ignore |
Sigintsignalen negeren (meestal CTRL-C). |
-s , --silent |
wees meer stil. Deze optie kan meerdere keren worden gegeven om steeds minder output te produceren. Deze optie resulteert in niet-tabulaire uitvoerformaat en het ontsnappen van speciale tekens. Escaping kan uitgeschakeld worden door de raw-modus te gebruiken; zie de beschrijving voor de --raw optie. |
-L , --skip-auto-rehash |
Schakel automatische heropname uit., See --auto-rehash . |
-N , --skip-column-names |
Don’t write column names in results. See --column-names . |
-L , --skip-comments |
Discard comments. Set by default, see --comments to enable. |
-L , --skip-line-numbers |
Don’t write line number for errors. See --line-numbers ., |
-L , --skip-progress-reports |
schakelt het verkrijgen van voortgangsrapporten voor lang lopende opdrachten uit. Zie --progress-reports . |
-L , --skip-reconnect |
niet opnieuw verbinden als de verbinding verbroken is. Zie --reconnect . |
-S , --socket=name |
voor verbindingen met localhost, het te gebruiken UNIX-socket-bestand of, in Windows, de naam van de te gebruiken benoemde pipe., |
--ssl |
activeert TLS. TLS is ook ingeschakeld, zelfs zonder deze optie in te stellen wanneer bepaalde andere TLS-opties zijn ingesteld. Beginnend met MariaDB 10.2, zal de optie --ssl het standaard verifiëren van het servercertificaat niet inschakelen. Om het servercertificaat te verifiëren, moet de gebruiker de optie --ssl-verify-server-cert opgeven. |
--ssl-ca=name |
definieert een pad naar een PEM-bestand dat een of meer x509-certificaten moet bevatten voor vertrouwde certificaatautoriteiten (CA ‘ s) om te gebruiken voor TLS., Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad. Zie overzicht beveiligde verbindingen: Ca ‘ s (Certificate Authorities) voor meer informatie. Deze optie impliceert de optie --ssl . |
--ssl-capath=name |
definieert een pad naar een map die één of meer PEM-bestanden bevat die elk één X509-certificaat moeten bevatten voor een vertrouwde certificaatautoriteit (ca) die voor TLS moet worden gebruikt. Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad., De map die door deze optie wordt opgegeven moet worden uitgevoerd met het openssl rehash Commando. Zie overzicht beveiligde verbindingen: Ca ‘ s (Certificate Authorities) voor meer informatie. Deze optie wordt alleen ondersteund als de client is gebouwd met OpenSSL of yaSSL. Als de client is gebouwd met GnuTLS of Schannel, dan wordt deze optie niet ondersteund. Zie TLS en cryptografie bibliotheken gebruikt door MariaDB voor meer informatie over welke bibliotheken worden gebruikt op welke platforms. Deze optie impliceert de optie --ssl ., |
--ssl-cert=name |
definieert een pad naar het x509-certificaatbestand dat Voor TLS moet worden gebruikt. Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad. Deze optie impliceert de optie --ssl . |
--ssl-cipher=name |
lijst van toegestane versleutelingssuites voor TLS. Deze optie impliceert de optie --ssl . |
--ssl-crl=name |
definieert een pad naar een PEM-bestand dat een of meer ingetrokken X509-certificaten moet bevatten om te gebruiken voor TLS., Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad. Zie overzicht beveiligde verbindingen: Certificaatintrekkingslijsten (CRL ‘ s) voor meer informatie. Deze optie wordt alleen ondersteund als de client is gebouwd met OpenSSL of Schannel. Als de client is gebouwd met yaSSL of GnuTLS, dan wordt deze optie niet ondersteund. Zie TLS en cryptografie bibliotheken gebruikt door MariaDB voor meer informatie over welke bibliotheken worden gebruikt op welke platforms., |
--ssl-crlpath=name |
definieert een pad naar een map die één of meer PEM-bestanden bevat die elk een ingetrokken X509-certificaat moeten bevatten om te gebruiken voor TLS. Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad. De map die door deze optie wordt opgegeven moet worden uitgevoerd met het openssl rehash Commando. Zie overzicht beveiligde verbindingen: Certificaatintrekkingslijsten (CRL ‘ s) voor meer informatie. Deze optie wordt alleen ondersteund als de client is gebouwd met OpenSSL., Als de client is gebouwd met yaSSL, GnuTLS of Schannel, dan wordt deze optie niet ondersteund. Zie TLS en cryptografie bibliotheken gebruikt door MariaDB voor meer informatie over welke bibliotheken worden gebruikt op welke platforms. |
--ssl-key=name |
definieert een pad naar een privésleutelbestand dat Voor TLS moet worden gebruikt. Deze optie vereist dat u het absolute pad gebruikt, niet een relatief pad. Deze optie impliceert de optie --ssl . |
--ssl-verify-server-cert |
maakt verificatie van servercertificaten mogelijk. Deze optie is standaard uitgeschakeld., |
-t , --table |
Display output in tabelformaat. Dit is de standaard voor interactief gebruik, maar kan worden gebruikt om tabeluitvoer te produceren in batchmodus. |
--tee=name |
voeg alles toe aan het uitvoerbestand. Zie ook interactieve help (\h). Werkt niet in batchmodus. Uitschakelen met --disable-tee . Deze optie is standaard uitgeschakeld. |
--tls-version=name |
deze optie accepteert een door komma ‘ s gescheiden lijst van TLS-protocolversies., Een TLS-protocolversie wordt alleen ingeschakeld als deze in deze lijst voorkomt. Alle andere versies van het TLS-protocol zijn niet toegestaan. Zie overzicht beveiligde verbindingen: TLS-protocolversies voor meer informatie. Deze optie werd toegevoegd in MariaDB 10.4.6. | -n , --unbuffered |
Spoelbuffer na elke query. |
-u , --user=name |
gebruiker voor login indien niet de huidige gebruiker. |
-v , --verbose |
Schrijf meer., (-v-V-V geeft de tabel output formaat). |
-V , --version |
versie-informatie tonen en afsluiten. |
-E , --vertical |
de uitvoer van een query (rijen) verticaal afdrukken. Gebruik het scheidingsteken \G om toe te passen op een bepaald statement als deze optie niet is ingeschakeld. |
-w , --wait |
als de verbinding niet tot stand kan worden gebracht, wacht en probeer het opnieuw in plaats van af te breken., |
-X , --xml |
produceer XML-uitvoer. Zie de mysqldump — xml optie voor meer. |
Optiebestanden
naast het lezen van opties vanaf de opdrachtregel, kan mysql
ook opties uit optiebestanden lezen. Als een onbekende optie wordt gegeven aan mysql
in een optiebestand, dan wordt deze genegeerd.
de volgende opties hebben betrekking op hoe MariaDB command-line tools optiebestanden afhandelt., Ze moeten worden gegeven als het eerste argument op de commandoregel:
in MariaDB 10.2 en later is mysql
gekoppeld met MariaDB Connector/C. MariaDB Connector/C kan echter nog niet overweg met het ontleden van optiebestanden voor deze client. Dat wordt nog steeds uitgevoerd door de server optie Bestand parsing code. Zie MDEV-19035 voor meer informatie.,
Groepen
mysql
leest alle opties uit de volgende groepen van de optie bestanden:
Groep | Beschrijving |
---|---|
|
Opties gelezen door mysql , waarin zowel MariaDB Server en MySQL Server. |
|
opties gelezen door mysql . Beschikbaar vanaf MariaDB 10.4.6., |
|
opties gelezen door alle MariaDB-en MySQL-clientprogramma ‘ s, die zowel MariaDB-als MySQL-clients bevatten. Bijvoorbeeld, mysqldump . |
|
opties gelezen door alle MariaDB-clientprogramma ‘ s en de MariaDB-Server. Dit is handig voor opties zoals socket en poort, wat gebruikelijk is tussen de server en de clients. |
|
opties die door alle MariaDB-clientprogramma ‘ s worden gelezen., |
Hoe je Opgeven Welk Protocol te Gebruiken Wanneer u Verbinding maakt met de mysqld-Server
Het volgende geldt voor alle MySQL en MariaDB opdrachtregel klanten:
U kunt de kracht die het protocol moet worden gebruikt om verbinding te maken met de mysqld
server door het geven van de protocol
optie op een van de volgende waarden: tcp
, socket
, pipe
of memory
.,
als protocol
niet is gespecificeerd, dan gebeurt het volgende:
Linux/Unix
- Als
hostname
niet is gespecificeerd ofhostname
islocalhost
, dan worden Unix Sockets gebruikt. Ongebruikte verbindingsparameters (zoalsport
) worden genegeerd. - In andere gevallen (
hostname
is gegeven en het is nietlocalhost
) wordt een TCPIP-verbinding gebruikt via de optieport
.
merk op dat localhost
een speciale waarde is., Het gebruik van 127.0.0.1 is niet hetzelfde. De laatste zal verbinding maken met de mysqld server via tcpip.
Windows
- Als
shared-memory-base-name
is gespecificeerd enhostname
is niet gespecificeerd ofhostname
islocalhost
, dan zal de verbinding plaatsvinden via gedeeld geheugen. Ongebruikte verbindingsparameters (zoalsport
) worden genegeerd., - als
shared-memory-base-name
niet is gespecificeerd enhostname
niet is gespecificeerd ofhostname
islocalhost
, dan zal de verbinding plaatsvinden via vensters met de naam pipes. - benoemde pipes zullen ook worden gebruikt als de
libmysql
/libmariadb
clientbibliotheek detecteert dat de client tcpip niet ondersteunt. - in andere gevallen wordt een TCPIP-verbinding gebruikt via de optie
port
. ,
hoe te testen welk Protocol wordt gebruikt
hetstatus
commando toont u informatie over welk protocol wordt gebruikt:
MySQL commando ’s
Er zijn ook een aantal commando’ s die in de client kunnen worden uitgevoerd. Merk op dat alle tekstcommando ’s eerst on line moeten zijn en eindigen met’; ‘
het Mysql_history bestand
op Unix schrijft de MySQL client een record van uitgevoerde statements naar een historyfile. Standaard krijgt dit bestand de naam .mysql_history
en wordt het aangemaakt in uw homedirectory., Om een ander bestand te specificeren, stelt u de waarde in van de variabele mysql_histfile-Environment.
De .mysql_history bestand moet worden beschermd met een beperkende toegangsmodus omdat gevoelige informatie kan worden geschreven om het, zoals de tekst van SQLstatements die wachtwoorden bevatten.
Als u geen geschiedenisbestand wilt behouden, verwijdert u dit eerst .mysql_history als het bestaat, en gebruik dan een van de volgende technieken:
- Stel de variabele mysql_histfile in op /dev / null. Om ervoor te zorgen dat deze instelling van kracht wordt elke keer dat je inlogt, plaats je de instelling in een van de opstartbestanden van je shell.,
- aanmaken .mysql_history als een symbolische link naar/dev/null:
shell> ln -s /dev/null $HOME/.mysql_history
u hoeft dit maar één keer te doen.
prompt opdracht
het prompt Commando configureert de standaard prompt \N >
. De string voor het definiëren van de prompt kan de volgende speciale sequenties bevatten.
MySQL Tips
Deze sectie beschrijft enkele technieken die u kunnen helpen omMySQL
effectiever te gebruiken.,
weergave van Querieresultaten verticaal
sommige querieresultaten zijn veel leesbaarder wanneer ze verticaal worden weergegeven, in plaats van in het gebruikelijke horizontale tabelformaat. Query ‘ s kunnen verticaal worden weergegeven door de query te termineren met \G in plaats van een puntkomma. Bijvoorbeeld, langere tekstwaarden die nieuwe regels bevatten zijn vaak veel gemakkelijker te lezen met verticaloutput:
gebruikmakend van de –safe-updates optie
voor beginners is een nuttige opstartoptie --safe-updates
(of--i-am-a-dummy
, wat hetzelfde effect heeft)., Het is een helpvoor gevallen waarin u een DELETE FROM tbl_name
statement hebt uitgegeven, maar deWHERE
clausule bent vergeten. Normaal verwijdert een dergelijk statement alle rijen uit de tabel. Met --safe-updates
kunt u alleen rijen verwijderen door de sleutelwaarden op te geven die hen identificeren. Dit helpt accidenten te voorkomen.,
wanneer u de optie --safe-updates
gebruikt, geeft mysql het volgende statement uit wanneer het verbinding maakt met de MariaDB-server:
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
Het set statement heeft de volgende effecten:
- Het is niet toegestaan een statement bij te werken of te verwijderen tenzij u een belangrijke beperking opgeeft in de WHERE-clausule of een LIMIETCLAUSULE (of beide)). Bijvoorbeeld:
UPDATE tbl_name SET not_key_column=val WHERE key_column=val;UPDATE tbl_name SET not_key_column=val LIMIT 1;
- De server beperkt alle grote
SELECT
resultaten tot 1.000 rijen, tenzij het statement EenLIMIT
clausule bevat., - de server verbreekt multiple-table
SELECT
statements die waarschijnlijk meer dan 1.000.000 rijcombinaties moeten onderzoeken.
mysql --safe-updates --select_limit=500 --max_join_size=10000
het uitschakelen van MySQL Auto-Reconnect
als de MySQL-client zijn verbinding met de server verliest tijdens het verzenden van astatement, probeert het onmiddellijk en automatisch een keer opnieuw verbinding te maken met de server en het statement opnieuw te verzenden., Echter, zelfs als mysql erin slaagt verbinding te maken, is je eerste verbinding beëindigd en zijn al je vorige sessionobjects en instellingen verloren gegaan: tijdelijke tabellen, de autocommit mode, anduser-gedefinieerde en sessievariabelen. Ook, elke huidige transactie rolt terug.Dit gedrag kan gevaarlijk voor je zijn, zoals in het volgende voorbeeld waar de server werd afgesloten en herstart tussen de eerste en tweede statementszonder dat je het wist:
de @a user variabele is verloren gegaan met de verbinding, en na de verbinding is het ongedefinieerd., Als het belangrijk is om MySQL te laten beëindigen met een fout als de verbinding verloren is gegaan, kunt u de MySQL client starten met de --skip-reconnect
optie.
zie ook
- verbindingsproblemen oplossen
- Leesregelcommando ‘ s en configuratie