Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP][MYSQL] Błąd mysql
Wolfie
post 15.06.2009, 12:36:26
Post #1





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam,

Mam takie oto zapytanie ktore przerabialem z postgreSQL do MySQL

  1. <?php
  2.  
  3.    require('conn.php');
  4.    
  5.    $sql = "CREATE TABLE adres (
  6.        adres_id SERIAL PRIMARY KEY NOT NULL,
  7.        jednostka_id int,
  8.        sadres1 varchar(255),
  9.        sadres2 varchar(255),
  10.        smiasto varchar(255),
  11.        skod varchar(10),
  12.        styp varchar(50),
  13.        CONSTRAINT fk_adres_jednostka_id
  14.            FOREIGN KEY (jednostka_id) REFERENCES jednostka(jednostka_id)
  15.        )";
  16.        
  17.    $query = mysql_query($sql) or die(mysql_error());
  18. ?>


No i wywala mi nastepujacy błąd :

Cytat
Can't create table 'contactmanager.adres' (errno: 150)


Nie wiem jak sobei z tym poradzic bo pierwszy raz spotykam sie z CONSTRAINT i FOREIGN KEY no i mysle ze to chyba przez to cos nie tak.....
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 12:38:59
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a jak wyglada zapytanie tworzące tabelę "jednostka" ?
No i zakladam ze ta tabela juz istnieje przed wykonywaniem tego zapytania co tu podales?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 12:48:54
Post #3





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


NIe istnieje, to jest pierwsza tabela w tej bazie danych ktora chce utworzyc
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 12:50:21
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to nic dziwnego, ze sie wywala, skoro tworzysz relacje do tabeli, ktora nie istnieje.

jak chcesz pominac sprawdzanie relacji to wykonaj najpierw takie zapytanie:
  1. SET FOREIGN_KEY_CHECKS=0;

I jak bedzie po wszystkim, to:
  1. SET FOREIGN_KEY_CHECKS=1;


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 12:55:52
Post #5





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Ok, ale dodac to przed zapytaniem sql ? w zapytaniu ? po zapytaniu ? Czy gdzies w SQL Administratorze albo phpMyAdminie ?

Ten post edytował Wolfie 15.06.2009, 12:56:59
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 12:57:52
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zrób sobie mysql_query" title="Zobacz w manualu PHP" target="_manual z ustawianiem przed tym zapytaniem.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 13:00:34
Post #7





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Wpisalem w phpMyAdminie zapytanie SET FOREIGN_KEY_CHECKS = 0 ; dla bazy danych ale wywalilo komunikat ze nie ma takiej tabeli smile.gif
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 13:02:46
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tylko to wpisałeś?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 13:03:02
Post #9





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Cytat
Zrób sobie mysql_query z ustawianiem przed tym zapytaniem.


Chodzi Ci o cos takiego ? bo nie rozumiem tego zdania

  1. <?php
  2. $query = mysql_query(SET FOREIGN_KEY_CHECKS=0,$sql) or die(mysql_error());
  3. ?>


---------------------------------------------

Tak tylko to wpisalem

Ten post edytował Wolfie 15.06.2009, 13:03:46
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 13:08:08
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Tylko jeszcze z cudzysłowami ;]

I dopiero potem Twoje zapytania.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 13:09:34
Post #11





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Dodałem cudzyslowy a teraz jest cos takiego :

Cytat
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Apache\htdocs\OOP\PHP5\PHP5_ZP\ContactManager\adres_table.php on line 19



A zapytanie wyglada tak :

  1. <?php
  2. $query = mysql_query("SET FOREIGN_KEY_CHECKS=0",$sql) or die(mysql_error());
  3. ?>


Ten post edytował Wolfie 15.06.2009, 13:10:15
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 13:10:14
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wiesz, po co jest drugi parametr w mysql_query" title="Zobacz w manualu PHP" target="_manual?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
nospor
post 15.06.2009, 13:10:52
Post #13





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no ale mysl... po co te $sql na koncu?

  1. <?php
  2. $query = mysql_query('SET FOREIGN_KEY_CHECKS=0') or die(mysql_error());
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Wolfie
post 15.06.2009, 13:12:27
Post #14





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Z tego co wyczytalem to identyfikator połączenia smile.gif

Cytat
no ale mysl... po co te $sql na koncu?


Myslalem ze da sie zalatwic wszystko w jednym wywolaniu mysql_query i utworzenie tabeli i ustawienie checks=0

Ten post edytował Wolfie 15.06.2009, 13:13:42
Go to the top of the page
+Quote Post
erix
post 15.06.2009, 13:31:50
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




raz: jedno mysql_query" title="Zobacz w manualu PHP" target="_manual umożliwia odpalanie tylko jednego zapytania zarazem.
dwa: dobrze wyczytałeś.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 16.06.2009, 13:59:10
Post #16





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Problem znow sie pojawil ale co dziwne w tablicy gdzie nie ma ani kluczy obcych anie polecenia CONSTRAINT

Oto zapytanie :
  1. <?php
  2.  
  3.    require('conn.php');
  4.    
  5.    $sql = "CREATE TABLE jednostka (
  6.        jednostka_id SERIAL PRIMARY KEY NOT NULL,
  7.        snazwa1 varchar(100) NOT NULL,
  8.        snazwa2 varchar(100) NOT NULL,
  9.        ctyp char(1) NOT NULL
  10.        )";    
  11.        
  12.    $query = mysql_query('SET FOREIGN_KEY_CHECKS=0') or die(mysql_error());    
  13.    $query = mysql_query($sql) or die(mysql_error());
  14.  
  15. ?>


No i znowu ten sam błąd, nawet gdy uzywam SET FOREIGN_KEY_CHECKS = 0; .......

Cytat
Can't create table 'contactmanager.jednostka' (errno: 150)


Teraz juz nie kumam o co chodzi......
Go to the top of the page
+Quote Post
erix
post 16.06.2009, 14:17:17
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Na odwrót...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 16.06.2009, 14:23:41
Post #18





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Wybacz, ale nie rozumiem.....
Go to the top of the page
+Quote Post
erix
post 16.06.2009, 14:26:38
Post #19





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zamień zapytania kolejnością... dry.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Wolfie
post 16.06.2009, 15:04:23
Post #20





Grupa: Zarejestrowani
Postów: 686
Pomógł: 0
Dołączył: 10.11.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Zamienilem , nic to nie dalo.....

Zreszta logicznie myslac wogole tutaj nie powinno byc SET FOREIGN_KEY_CHECKS, no ale niewazne czy jest czy nie ma i w ktorym miejscu to i tak wywala blad, no i niewazne czy jest ustawione na 1 czy 0, przetestowalem wszystkie mozliwosci.....i nic....

---------------------------------------------------------------------------------------------------

W zwiazku z powyzszym postanowilem usunac wszystkie tabele z bazy danych i te ostatnio utworzyc jako pierwsza poniewaz to do niej wlasnie wystepuje referencja w kazdej innej tabeli. Po usunieciu ostatnie zapytanie udalo sie bez problemu, niestety gdy odpalilem kolejny skrpytp :

  1. <?php
  2.  
  3.    require('conn.php');
  4.    
  5.    
  6.    $sql = "CREATE TABLE adres (
  7.        adres_id SERIAL PRIMARY KEY NOT NULL,
  8.        jednostka_id int,
  9.        sadres1 varchar(255),
  10.        sadres2 varchar(255),
  11.        smiasto varchar(255),
  12.        skod varchar(10),
  13.        styp varchar(50),
  14.        CONSTRAINT fk_adres_jednostka_id
  15.            FOREIGN KEY (jednostka_id) REFERENCES jednostka(jednostka_id)
  16.        )";
  17.        
  18.    $query = mysql_query($sql) or die(mysql_error());
  19. ?>


Oczywiscie pojawil sie ten sam błąd, takze pod dodaniu do niego kolejnego zapytania :

  1. <?php
  2. $query = mysql_query('SET FOREIGN_KEY_CHECKS=0') or die(mysql_error());
  3. ?>


Nie kumam co jest nie tak.....przeciez to wydaje sie proste jak drut......

Prosze o pomoc

Ten post edytował Wolfie 16.06.2009, 14:45:11
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:42