Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Miten käytän MySQL command-line clientiä

Sivun loppuun

hevonen [23.06.2008 23:23:12]

#

Ongelma:
"To create tables by pasting the code into the MySQL command-line client."
ja
koodi on tämä

CREATE TABLE books (
title_id INT NOT NULL AUTO_INCREMENT,
title VARCHAR (150),
pages INT,
PRIMARY KEY (title_id));
CREATE TABLE authors (
author_id INT NOT NULL AUTO_INCREMENT,
title_id INT NOT NULL,
author VARCHAR (125),
PRIMARY KEY (author_id));

Eli Miten laitan tuon koodin MySQL command-line clientiin?
Käytän Wamp:pia. Tuonhan voi näpytellä MySQL konsoliin kirjain kirjaimelta, mutta ongelma on saada se pastetettua suoraan.

Olen yrittänyt saada koodia SQLite-Manageriin selaimella (tuli mukana wampissa), mutta siinä onnistumatta.
Laiton koodin SQL suorittimeen ja table books ilmestyi. En kuitenkaan löytänyt mistään tätä tulosta, joka pitäisi ilmestyä:

mysql> CREATE TABLE books (
    -> title_id INT NOT NULL AUTO_INCREMENT,
    -> title VARCHAR (150),
    -> pages INT,
    -> PRIMARY KEY (title_id));
Query OK, 0 rows affected (0.06 sec)
mysql> CREATE TABLE authors (
    -> author_id INT NOT NULL AUTO_INCREMENT,
    -> title_id INT,
    -> author VARCHAR (125),
    -> PRIMARY KEY (author_id));
Query OK, 0 rows affected (0.06 sec)

Olen myös yrittänyt suorittaa koodia sqlite-managerissa firefox addonissa, mutta siinä onnistumatta. Saan tälläisen viestin "Likely SQL syntax error:".

Ehkä joku teistä tietää, kuinka näitä MySQL selainpohjaisia konsoleita käytetään.

tsuriga [24.06.2008 16:32:22]

#

Tallenna tiedostoon create-tables.sql ja komenna mysql mydb < create-tables.sql.

hevonen [24.06.2008 18:53:51]

#

tsuriga kirjoitti:

Tallenna tiedostoon create-tables.sql ja komenna mysql mydb < create-tables.sql.

Tein tiedoston create-tables.sql, johon laitoin tuon ylimmän koodin. Kirjoitin MySQL konsoliin tuon komennon "mysql mydb < create-tables.sql". Kokeilin myös tätä "mydb < create-tables.sql", mutta mitään ei tapahtunut.

Sitten kokeilin tuota komentoa SQLiteManagerissa: ensin otin tuon tiedoston suoritettavaksi ja laitoin tuon komennon "mysql mydb < create-tables.sql" suoritettavaksi. Saan tälläisen viestin:

Error line(s) : 1
Error :	SQL logic error or missing database
 	table books already exists

Mutta table booksia ei löydy mistään, kun sen pitäisi näyttää samalta kuin tuo edellisen viestini toinen laatikko.

Miten saan tuon oikean tuloksen, joka on tuo edellisen viestini toinen laatikko, näkyviin?

hevonen [26.06.2008 02:22:50]

#

Nyt pääsin hieman eteenpäin.
Talletin tuon filen, ja ajoin tän mysql command clinessä:

\. C:\wamp\www\create-tables.sql

joka antaa tämän:

ERROR 1046 (3D000): No database selected mysql>

Tuo antaa ymmärtää, ettei database ole valittuna.
Yritin ratkaista tuota tällä:

\. C:\wamp\www\create-tables.sql select mydb

joka antaa error 2:n.

Ja tällä

\. 'C:\wamp\www\create-tables.sql' select mydb

joka antaa taas error 22:n.

Ehkä tuo komento select mydb on väärä.
Mutta miten muuten voin valita databasen?

siirappi [26.06.2008 02:24:48]

#

USE tietokanta

Tuo sinne sql-tiedostoon.

hevonen [26.06.2008 02:41:16]

#

Kiitos!
Nyt alkoi tapahtua, kun laitoin tuon "Use mysql" komennon lisäksi.

Sain tälläisen viestin:
Database changed
Query OK, 0 rows affected
Query OK, 0 rows affected

Mutta miten pääsen näkemään tuon tietokannan?
Yritin tätä komentoa:

SELECT * FROM books

Yritin myös tätä komentoa:

Describe books

Mutta ei anna mitään. Tuo books on taulukon nimi.

tsuriga [26.06.2008 16:50:36]

#

Tuo mysql mydb -t < create-tables.sql siis komentokehoitteeseen/-terminaaliin, ei mysql:n vastaavaan.

Komento jaoteltuna osiin

mysql                  // käynnistetään mysql
mydb                   // valitaan käytettävä tietokanta
-t                     // pyydetään taulukkomuotoinen tulostus
< create-tables.sql    // syötetään ohjelmaan create-tables.sql-tiedoston sisältö

Lisäsin esimerkkiin tuon -t parametrin jos se vaikka auttaisi.

hevonen [26.06.2008 20:07:38]

#

Katsoin, ettei minulla ollut tuon nimistä tietokantaa kuin mydb, vain information_schema, test, mysql ja sql.

Yritin kuitenkin ajaa tuota koodia ja saan tämän varoituksen:

ERROR 1064 (42000)

joka valittaa erroria sql syntaxissa.

Muutin tuota koodia niin, että viimeinen rivi on:

 < C:\wamp\www\create-tables.sql

joka antaa varoituksen:

Show warnings disabled.
Show warnings disabled.

tsuriga [26.06.2008 21:39:08]

#

Koodilaatikon sisällön oli siis tarkoitus vain ja ainoastaan havainnollistaa komennon eri vaiheita, tuollaisenaan ei ole tarkoituskaan toimia vaan siihen Windowsin komentoriville koko pötkö putkeen niin kuin koodilaatikon sisältävässä viestissäkin on alussa esitetty. Ja tietokannan kohdalle vaihdat tietenkin sen tietokannan, minne ne taulut tahdot luoda.

hevonen [26.06.2008 22:40:08]

#

Kiitos korjauksesta!
Yritin tätä:

mysql mysql < create-tables.sql;

Jossa toinen mysql on tietokannan nimi.
Mutta saan tämän viestin:

ERROR 1064 (42000): 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 'mysql mysql < create-tables.sql' at line 1

Blaze [27.06.2008 08:59:17]

#

Kirjotat sen edelleen väärään paikkaan.

C:\> mysql mydb -t < create-tables.sql

EI

mysql> mysql mydb -t < create-tables.sql

Huomaa myös, että MySQL:ssä on oletuksena valmiina mysql-niminen tietokanta, joka sisältää mm. käyttäjätiedot. Oletettavasti et halua koskea siihen.

hevonen [27.06.2008 15:15:16]

#

Yritin tuota koodia cmd:ssä ja saan tämän:

C:\>mysql
'mysql' is not recognized as an internal or external command,
operable program or batch file.

Tuo virhe liittyy jotenkin XP:hen. Suoritin tämän sivuston: http://www.php-mysql-tutorial.com/mysql-tutorial/start-mysql-client-server.php
viimeisen neuvon: lisäsin tämän c:\mysql\bin environt variableihin tuloksetta.

punppis [05.07.2008 17:29:14]

#

Vaikka tämä nyt on jo vissiin ratkaistu, kukaan ei ole antanut näitä:

Siihen ikkunaan (kuten myös windowsin komentoriville) voi kopioida sitä tekstiä painamalla sitä hiiren kakkosnappulaa, ja sieltä sitten. CTRL-V ei siis toimi.

Toinen vaihtoehto tuon ratkaisemiseen olisi voinut olla tekstitiedosto, joka sisältä create table ..., lauseen. Jos tekstitiedosto on vaikka C:\table.sql, niin sen voi sieltä mysql-konsolista laittaas source-komennolla:

source C:\table.sql

Muistathan sitten myös laittaa siihen tekstitiedostoon use <kannan_nimi>, tai sitten vaihtoehtoisesti valita sen tietokannan sieltä konsolista ennen tuon tiedoston lisäystä.

Metabolix [05.07.2008 18:15:22]

#

"Leikkasin sipulin viipaleiksi vaikka ohjeessa käskettiin leikata tomaatti. Ilmeisesti viipalointi meni pieleen, kun ei näy tulleen tomaattiviipaleita?"

Kyllä minä ainakin olen sitä mieltä, että jos ensimmäisellä konstilla taulu ilmestyy, kaiken pitäisi olla kunnossa. Kaikki MySQL-klientit eivät tulosta samanlaisia ilmoituksia, joten ei ole mitään syytä säikähtää, vaikkei oppaan mukaista tulostetta näy, kun ei kerran ole oppaan mukaisia välineitäkään. Jos kaikki toimii, lopeta ihmetteleminen ja jatka eteenpäin. MySQL-komentoriviasiakasohjelma ei ole lainkaan välttämätön työkalu, joten jos et välttämättä koe sitä tarvitsevasi, voit jättää senkin etsimisen nyt sikseen.

hevonen [08.07.2008 21:24:06]

#

punppis kirjoitti:

Siihen ikkunaan (kuten myös windowsin komentoriville) voi kopioida sitä tekstiä painamalla sitä hiiren kakkosnappulaa, ja sieltä sitten. CTRL-V ei siis toimi.

Tuo on hyvä vinkki. Tämän avulla pärjään ilman noita ohjelmia.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta