php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-05-2011, 16:11
polonese
 Registrierter Benutzer
Links : Onlinestatus : polonese ist offline
Registriert seit: Nov 2010
Beiträge: 6
polonese befindet sich auf einem aufstrebenden Ast
Standard Irreführender Mysql Fehler "1005 Can´t create table" bei hinzufügen von Foreign key?

Hallo,

ich möchte gerne folgendes SQL Snippet ausführen:

Code:
use testtable;

CREATE TABLE adresses (id INT AUTO_INCREMENT NOT NULL, postalCodes_id INT NOT NULL, states_id INT NOT NULL, INDEX IDX_EF19255273DBF541 (postalCodes_id), 
INDEX IDX_EF192552B17973F (states_id), PRIMARY KEY(id)) ENGINE = InnoDB;

CREATE TABLE postalCodes (id INT AUTO_INCREMENT NOT NULL, code VARCHAR(255) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB;

CREATE TABLE states (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(45) NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB;

ALTER TABLE adresses ADD FOREIGN KEY (states_id) REFERENCES states(id);
ALTER TABLE adresses ADD FOREIGN KEY (postalCodes_id) REFERENCES postalCodes(id);
bekomme jedoch aus mir total suspekten Gründen folgende Fehlermeldung:

Code:
Action: 'ALTER TABLE adresses ADD FOREIGN KEY (postalCodes_id) REFERENCES postalCodes(id)'

Error: 'Error Code: 1005
Can't create table 'testtable.#sql-10e0_94' (errno: 150)'
Der Fehler kommt nur beim hinzufügen vom foreign key der camelCase Tabelle 'postalCodes' vor, das hinzufügen des foreeign key´s für 'states' funktioniert einwandfrei.

Also meine Frage: Was mache ich falsch? (Win 7, MySQL 5.5)

Thx für eure Antworten!
Mit Zitat antworten
  #2 (permalink)  
Alt 29-05-2011, 16:46
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

auf dem gleichen System (Win7, MySQL5.5) und mit demselben Code kommt bei mir kein Fehler. Führ mal die Statements einzeln aus, um sicherzugehen, dass nicht zwischendrin schon ein Fehler passiert.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #3 (permalink)  
Alt 29-05-2011, 17:02
polonese
 Registrierter Benutzer
Links : Onlinestatus : polonese ist offline
Registriert seit: Nov 2010
Beiträge: 6
polonese befindet sich auf einem aufstrebenden Ast
Standard

Hab Sie alle einzeln aufgerufen... gleicher Fehler...

Hmm es lag wohl an der Einstellung die ich in der my.ini hatte:

Code:
lower_case_table_names=0
Wenn ich diese Einstellung auskommentiere, kommt kein Fehler.

Allerdings sollte die Einstellung verhindern, dass alle Tabellennamen automatisch in kleinbuchstaben umgewandelt werden.

Das heißt, dass jetzt zwar der Fehler weg ist, die Tabelle aber nicht mehr wie gewünscht postalCodes sondern postalcodes heißt...

Hat jemand ne Idee wie auch camelCase Tabellennamen unterstützt werden?
Mit Zitat antworten
  #4 (permalink)  
Alt 29-05-2011, 17:05
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ich würde Underscores statt Camelcase verwenden. Bei Großbuchstaben gibt es immer Dinge, die man beachten muss. Bei Underscores gibt's praktische nie Probleme.
Mit Zitat antworten
  #5 (permalink)  
Alt 29-05-2011, 17:14
polonese
 Registrierter Benutzer
Links : Onlinestatus : polonese ist offline
Registriert seit: Nov 2010
Beiträge: 6
polonese befindet sich auf einem aufstrebenden Ast
Standard

Werde ich wahrscheinlich nicht drum rum kommen

Find das nur echt schade, da ich eigentlich alles einheitlich halten wollte...

Wenn ich ein Objekt (bzw. eine Doctrine Entity) mit dem Namen PostalCode habe, soll die Tabelle nicht unbedingt postal_codes heißen... 'PostalCodes' wäre da viel naheliegender und nach meinem Geschmack auch schöner.

Vorallem weil camelCase bei Columns wiederum kein Problem sind, frage ich mich wo da das große Problem ist. Natürlich ist Windows case-insensetive und es könne zu problemen kommen wenn ich zwei tabellen mit gleichem namen aber unterschiedlichem case anlegen würde, darauf könnte man als entwickler aber schon selber achten...
Mit Zitat antworten
  #6 (permalink)  
Alt 29-05-2011, 17:25
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von polonese Beitrag anzeigen
Wenn ich ein Objekt (bzw. eine Doctrine Entity) mit dem Namen PostalCode habe, soll die Tabelle nicht unbedingt postal_codes heißen... 'PostalCodes' wäre da viel naheliegender und nach meinem Geschmack auch schöner.
"PostalCodes" ist aber auch wieder was anderes als "PostalCode". Außerdem sieht man so auf den ersten Blick den Unterschied zwischen Datenbank- und Entitiyname. Ich stelle mir das Potenzial für Verwirrungen bei PostalCode -> PostalCodes deutlich größer vor als bei PostalCode -> postal_code.

Zitat:
Zitat von polonese Beitrag anzeigen
Vorallem weil camelCase bei Columns wiederum kein Problem sind, frage ich mich wo da das große Problem ist. Natürlich ist Windows case-insensetive und es könne zu problemen kommen wenn ich zwei tabellen mit gleichem namen aber unterschiedlichem case anlegen würde, darauf könnte man als entwickler aber schon selber achten...
Auch bei Spalten würde ich Konsequent auf die Kleinschreibweise setzen. So sieht man deutlich was ein Entity-Attribut und was ein Spaltenname ist (außer bei einteiligen Namen).

Geändert von h3ll (29-05-2011 um 17:54 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 29-05-2011, 17:45
polonese
 Registrierter Benutzer
Links : Onlinestatus : polonese ist offline
Registriert seit: Nov 2010
Beiträge: 6
polonese befindet sich auf einem aufstrebenden Ast
Standard

Okay, überredet

thx!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Kurze Wörter aud Mysql Table "Tags_Keywords" entfernen basst PHP Developer Forum 9 29-07-2009 17:30
Soap "Could not connect to host" "HTTP" Fehler. Funktioniert auf localhost aber Tormentor PHP Developer Forum 1 29-09-2006 15:26
error 1005 can't create table error(150) schlimmerfinger SQL / Datenbanken 14 01-04-2005 17:05
[MySQL 3.23.X] Welches Format / Passwörter in DB -> "MySQL" -> Table "User" TheUser SQL / Datenbanken 2 18-08-2003 15:09
CREATE TABLE Fehler archie SQL / Datenbanken 4 17-03-2002 12:52

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:17 Uhr.