webForumDet fria alternativet
Logga in / Bli medlem

Problem att skapa tabell

Databaser & SQL

15 svar · 391 visningar · startad av Mika3l

Medlem sedan nov. 20018 492 inlägg
Trådstart#1

Har stött på ett problem när jag via MySQL-Front försöker skapa en tabell i en databas.
Felmeddelande och lite info

f_sex är av typen tinytext, längd 6, not null.
f_password är av typen varchar, längd 15, not null.

Förresten, när jag ändå håller på att fråga, finns det någon fälttyp som klarar av ca 500 tecken?

Mycket tacksam för svar!

RED: Såg att jag var så klantig så jag hade gjort jämt bara lite fel med bilden, jag borde inte sitta uppe nu, för trött. :p

Medlem sedan apr. 20003 174 inlägg
#2

Hur ser hela sql-satsen ut som du försöker skapa?
Den kom inte med helt i bilden du bifogade.. :)

Gällande fälttyp som klarar ca 500 tecken:
Text klarar jubbet.

Manualen skrev:

In most respects, you can regard a TEXT column as a VARCHAR column that can be as big as you like.

Medlem sedan nov. 20018 492 inlägg
#3

Ja just det, text finns ju (får skylla på min trötthet igen ;) )! :)

Är inte så lite svårt att få fram SQL-satsen, den jäkla rutan går inte att få bort utan att välja det jobbiga alternativet Cancel och då försvinner ju allt och jag måste skriva om det igen. :l

Medlem sedan nov. 20018 492 inlägg
#4

Så här ser det ut.

CREATE TABLE `tbl_AdminMembers` (`f_AMID` TINYINT (3) NOT NULL AUTO_INCREMENT, `f_firstname` VARCHAR (40) NOT NULL, `f_lastname` VARCHAR (40) NOT NULL, `f_birthYear` TINYINT (4) NOT NULL, `f_birthMonth` TINYINT (2) NOT NULL, `f_birthDay` TINYINT (2) NOT NULL, `f_sex` TINYTEXT (6) NOT NULL AUTO_INCREMENT, `f_worktitle` VARCHAR (20), `f_password` VARCHAR (15) NOT NULL AUTO_INCREMENT, `f_type` TINYINT (1) NOT NULL, `f_associationID` TINYINT (4) NOT NULL, `f_regdate` DATETIME (3), `f_regdateYear` TINYINT (4) NOT NULL, `f_regdateMonth` TINYINT (2) NOT NULL, `f_regdateDay` TINYINT (2) NOT NULL, `f_latestlogin` DATETIME (20), `f_adressType` VARCHAR (13) NOT NULL, `f_email` VARCHAR (25) NOT NULL, `f_phone` TINYINT (12) NOT NULL, `f_company` VARCHAR (40), `f_postcode` TINYINT (4) NOT NULL, `f_functions` TINYINT (3) UNSIGNED, `f_sections` VARCHAR (255), `f_education` VARCHAR (255), `f_distinctions` VARCHAR (255), `f_interests` VARCHAR (255), `f_note` VARCHAR (255), PRIMARY KEY(`f_AMID`), UNIQUE(
Error: 1064 - You have an error in your SQL syntax near '(6) NOT NULL AUTO_INCREMENT, `f_worktitle` VARCHAR (20), `f_password` VARCHAR (1' at line 1
Medlem sedan apr. 20003 174 inlägg
#5

.. TINYTEXT (6) NOT NULL AUTO_INCREMENT ..

Du kan inte sätta AUTO_INCREMENT på en string-type kolumn..

Ändra det så borde det lira bättre. :)

Medlem sedan juni 20019 024 inlägg
#6

Det är en liten bugg i MySql-Front att vissa egenskaper kan associeras till datatyper som inte stöder dem. Annars är det ett ypperligt verktyg.

Dessutom, i din sql-fråga, datetime kan inte specifieras med längd.

DATETIME [s](3)[/s]
Medlem sedan dec. 200012 464 inlägg
#7

Det är inte tillåtet att ange längd för text/tinytext. För int/tinyint är det inte relevant.

Yasmdf

Medlem sedan nov. 20018 492 inlägg
#8

Hmmm, märks att jag var trött, auto_increment på ett textfält... :e

Jaja, jag har försökt att få det att fungera men det vill sig inte riktigt nu heller. :l

You have an error in your SQL syntax near ') NOT NULL AUTO_INCREMENT, `f_firstname` VARCHAR () NOT NULL, `f_lastname` VARCH' at line 1

CREATE TABLE `tbl_AdminMembers` (`f_AMID` TINYINT () NOT NULL AUTO_INCREMENT, `f_firstname` VARCHAR () NOT NULL, `f_lastname` VARCHAR () NOT NULL, `f_birthYear` TINYINT () NOT NULL, `f_birthMonth` TINYINT () NOT NULL, `f_birthDay` TINYINT () NOT NULL, `f_sex` TINYTEXT () NOT NULL, `f_worktitle` VARCHAR (), `f_password` VARCHAR () NOT NULL, `f_type` TINYINT () NOT NULL, `f_associationID` TINYINT () NOT NULL, `f_regdateYear` TINYINT () NOT NULL, `f_regdateMonth` TINYINT () NOT NULL, `f_regdateDay` TINYINT () NOT NULL, `f_latestlogin` DATETIME (), `f_adressType` VARCHAR () NOT NULL, `f_email` VARCHAR () NOT NULL, `f_phone` TINYINT () NOT NULL, `f_company` VARCHAR (), `f_postcode` TINYINT () NOT NULL, `f_functions` TINYINT () UNSIGNED, `f_sections` VARCHAR (), `f_education` VARCHAR (), `f_distinctions` VARCHAR (), `f_interests` VARCHAR (), `f_note` VARCHAR (), PRIMARY KEY(`f_AMID`), UNIQUE(
Medlem sedan dec. 200012 464 inlägg
#9

Ta bort () för alla utom varchar/char, dessa behöver en längd

Medlem sedan nov. 20018 492 inlägg
#10

Ville inte riktigt fungera nu heller, har tagit bort alla () korrekt vad jag kan se. :o

CREATE TABLE `tbl_AdminMembers` (`f_AMID` TINYINT NOT NULL AUTO_INCREMENT, `f_firstname` VARCHAR () NOT NULL, `f_lastname` VARCHAR () NOT NULL, `f_birthYear` TINYINT NOT NULL, `f_birthMonth` TINYINT NOT NULL, `f_birthDay` TINYINT NOT NULL, `f_sex` TINYTEXT NOT NULL, `f_worktitle` VARCHAR (), `f_password` VARCHAR () NOT NULL, `f_type` TINYINT NOT NULL, `f_associationID` TINYINT NOT NULL, `f_regdateYear` TINYINT NOT NULL, `f_regdateMonth` TINYINT NOT NULL, `f_regdateDay` TINYINT NOT NULL, `f_latestlogin` DATETIME, `f_adressType` VARCHAR () NOT NULL, `f_email` VARCHAR () NOT NULL, `f_phone` TINYINT NOT NULL, `f_company` VARCHAR (), `f_postcode` TINYINT NOT NULL, `f_functions` TINYINT UNSIGNED, `f_sections` VARCHAR (), `f_education` VARCHAR (), `f_distinctions` VARCHAR (), `f_interests` VARCHAR (), `f_note` VARCHAR (), PRIMARY KEY(`f_AMID`), UNIQUE(

You have an error in your SQL syntax near ') NOT NULL, `f_lastname` VARCHAR () NOT NULL, `f_birthYear` TINYINT NOT NULL, `f' at line 1

Medlem sedan dec. 200012 464 inlägg
#11

Du måste ange en maxlängd för alla kolumner av typen varchar

 `f_firstname` VARCHAR (245) NOT NULL

eller vilket värde du nu vill ha. Etc.

Medlem sedan nov. 20018 492 inlägg
#12

Fungerar inte nu heller av någon konstig anledning, får ett skumt felmeddelande också. :o

You have an error in your SQL syntax near '' at line 1

CREATE TABLE `tbl_AdminMembers` (`f_AMID` TINYINT NOT NULL AUTO_INCREMENT, `f_firstname` VARCHAR (40) NOT NULL, `f_lastname` VARCHAR (40) NOT NULL, `f_birthYear` TINYINT NOT NULL, `f_birthMonth` TINYINT NOT NULL, `f_birthDay` TINYINT NOT NULL, `f_sex` TINYTEXT NOT NULL, `f_worktitle` VARCHAR (20), `f_password` VARCHAR (15) NOT NULL, `f_type` TINYINT NOT NULL, `f_associationID` TINYINT NOT NULL, `f_regdateYear` TINYINT NOT NULL, `f_regdateMonth` TINYINT NOT NULL, `f_regdateDay` TINYINT NOT NULL, `f_latestlogin` DATETIME, `f_adressType` VARCHAR (13) NOT NULL, `f_email` VARCHAR (25) NOT NULL, `f_phone` TINYINT NOT NULL, `f_company` VARCHAR (40), `f_postcode` TINYINT NOT NULL, `f_functions` TINYINT, `f_sections` VARCHAR (255), `f_education` VARCHAR (255), `f_distinctions` VARCHAR (255), `f_interests` VARCHAR (255), `f_note` VARCHAR (255), PRIMARY KEY(`f_AMID`), UNIQUE(
Medlem sedan juni 20015 009 inlägg
#13

Mika3l: Lite off-topic men jag rekommenderar mascon för att skapa tabeller, ett helt perfekt program tycker jag. Bra överblick och jag har aldrig haft några problem där. Visst man tycker mysqlfront ska räcka (jag använder det med) men jag (säkert många andra med) får ofta problem med att skapa tabeller där.

Medlem sedan nov. 20018 492 inlägg
#14

Off topic eller ej, har du någon länk? ;)

Medlem sedan dec. 200012 464 inlägg
#15

Det är inte lämpligt att använda tinyint för primärnyckel, du kan bara lagra 127 poster i så fall.

CREATE TABLE `tbl_AdminMembers` (`f_AMID` INT NOT NULL AUTO_INCREMENT, 
`f_firstname` VARCHAR (40) NOT NULL, 
`f_lastname` VARCHAR (40) NOT NULL, 
`f_birthYear` TINYINT NOT NULL, 
`f_birthMonth` TINYINT NOT NULL, 
`f_birthDay` TINYINT NOT NULL, 
`f_sex` TINYTEXT NOT NULL, 
`f_worktitle` VARCHAR (20), 
`f_password` VARCHAR (15) NOT NULL, 
`f_type` TINYINT NOT NULL, 
`f_associationID` TINYINT NOT NULL, 
`f_regdateYear` TINYINT NOT NULL, 
`f_regdateMonth` TINYINT NOT NULL, 
`f_regdateDay` TINYINT NOT NULL, 
`f_latestlogin` DATETIME, 
`f_adressType` VARCHAR (13) NOT NULL, 
`f_email` VARCHAR (25) NOT NULL, 
`f_phone` TINYINT NOT NULL, 
`f_company` VARCHAR (40), 
`f_postcode` TINYINT NOT NULL, 
`f_functions` TINYINT, 
`f_sections` VARCHAR (255), 
`f_education` VARCHAR (255), 
`f_distinctions` VARCHAR (255), 
`f_interests` VARCHAR (255), 
`f_note` VARCHAR (255), 
PRIMARY KEY(`f_AMID`))

Det var lite avklippt i slutet . Om du vill ha något som unique så kan du lägga till det i efterhand.

Medlem sedan nov. 20018 492 inlägg
#16

Tack LarsG! :D

Hur fixar jag så att det blir unikt (gick inte att välja det och jag har inte precis någon vana att "koda databaser" ;) )?
Testade med ALTER TABLE `tbl_adminmembers` CHANGE `f_AMID` `f_AMID` INT(11) NOT NULL AUTO_INCREMENT UNIQUE.
Fick inget felmeddelande men jag kan inte se om det gick eller ej (antar att det gick men det är lika bra att vara säker, hinner inte testa nu heller ;) ).

257 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)