Deine Leidenschaft ist die Unterwasserfoto-grafie?
Dann ist Qozido genau das Richtige für Dich!
Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!
www.qozido.de
CronJob-Service
bei SELFPHP mit ...
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren
10.01.2011, 13:15:48
Anfänger
Registriert seit: Aug 2007
Beiträge: 20
NOT NULL erzeugt keinen Error
Hallo zusammen.
Ich habe auf einem Ubuntu ein MySQL Server.
Das Problem ist das es bei Feldern die Mit NOT NULL definiert sind, keinen Fehler ausgiebt sondern nur eine Warnung wenn sie NULL sind.
Version:
Code:
mysql> SELECT VERSION();
+-------------------+
| VERSION() |
+-------------------+
| 5.1.49-1ubuntu8.1 |
+-------------------+
Definition Tabelle:
Code:
mysql> DESC proftpd_users;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| userid | int(11) | NO | PRI | NULL | auto_increment |
| groupidfs | int(5) | YES | | 0 | |
| username | varchar(50) | NO | UNI | NULL | |
| password | varchar(50) | NO | | NULL | |
| homedir | varchar(50) | NO | UNI | NULL | |
| shell | varchar(50) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
Eintrag:
Code:
mysql> INSERT INTO proftpd_users (username) VALUES ("Benutzer");
Query OK, 1 row affected, 2 warnings (0.01 sec)
Warnungen:
Code:
mysql> SHOW WARNINGS;
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1364 | Field 'password' doesn't have a default value |
| Warning | 1364 | Field 'homedir' doesn't have a default value |
+---------+------+-----------------------------------------------+
Eintrag in der Tabelle:
Code:
mysql> SELECT * FROM proftpd_users;
+--------+-----------+----------+----------+---------+-------+
| userid | groupidfs | username | password | homedir | shell |
+--------+-----------+----------+----------+---------+-------+
| 1 | 0 | Benutzer | | | NULL |
+--------+-----------+----------+----------+---------+-------+
Wie kann ich verhindern dass der Eintrag gemacht wird und stattdessen ein Error erzeugt wird und nicht blos eine Warnung?
10.01.2011, 13:21:35
Junior Member
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
AW: NOT NULL erzeugt keinen Error
Kannst Du zusätzlich noch
Code:
mysql> SHOW CREATE TABLE proftpd_users;
zeigen?
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
10.01.2011, 13:33:03
Junior Member
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
AW: NOT NULL erzeugt keinen Error
Stimmt, eine blöde Reaktion von MySQL...
Wenn Du in Deinen INSERT Befehl alle relevanten Spalten (alle NOT NULL) Spalten auflistest, bekommt Du den ERROR 1048 (23000): Column 'xyz' cannot be null
Also in etwa so
Code:
mysql> INSERT INTO proftpd_users (username, passwort, homedir)
VALUES ("Benutzer", NULL, NULL);
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
10.01.2011, 14:22:12
Anfänger
Registriert seit: Aug 2007
Beiträge: 20
AW: NOT NULL erzeugt keinen Error
Code:
mysql> SHOW CREATE TABLE proftpd_users;
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| proftpd_users | CREATE TABLE `proftpd_users` (
`userid` int(11) NOT NULL AUTO_INCREMENT,
`groupidfs` int(5) DEFAULT '0',
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`homedir` varchar(50) NOT NULL,
`shell` varchar(50) DEFAULT NULL,
PRIMARY KEY (`userid`),
UNIQUE KEY `username` (`username`),
UNIQUE KEY `homedir` (`homedir`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 |
+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Zitat:
mysql> INSERT INTO proftpd_users (username, passwort, homedir)
VALUES ("Benutzer", NULL, NULL);
Danke das Hilft mir schon mal weiter.
Ich empfange den Username und das Passwort per POST mit:
Code:
$username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_URL);
Das Homedir wird anschliessend aus $username erstellt.
Wenn die mir jetzt noch sagst wie ich per php, falls der Benutzername/das Passwort leer ist, "NULL" einsetzen kann bin ich happy :).
Dann wäre das Problem ja gelöst.
10.01.2011, 14:52:00
Junior Member
Registriert seit: Aug 2010
Alter: 3
Beiträge: 395
AW: NOT NULL erzeugt keinen Error
Zitat:
Zitat von
iamgodx
$username = filter_input(INPUT_POST, "username", FILTER_SANITIZE_URL);
Wenn die mir jetzt noch sagst wie ich per php, falls der Benutzername/das Passwort leer ist, "NULL" einsetzen kann bin ich happy :).
Dann wäre das Problem ja gelöst.
Na in etwa so für jede Variable für den Insert. So ist sichergestellt, dass kein '' oder Blank drin steht, sondern tatsächlich der NULL-Wert.
PHP-Code:
if (empty( $username )) {
$username = null ;
}
Probiert mal, ob es funktioniert.
EDIT
Als zweite Lösung gibt es noch den Server-Modus für die SESSION oder GLOBAL
Code:
mysql> SET SESSION sql_mode = 'STRICT_ALL_TABLES';
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO proftpd_users (username) VALUES ("Benutzer");
ERROR 1364 (HY000): Field 'xyz' doesn't have a default value
mysql>
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Geändert von thomas_w (10.01.2011 um 15:13:47 Uhr)
Grund: EDIT 2. Lösung
10.01.2011, 15:20:13
Anfänger
Registriert seit: Aug 2007
Beiträge: 20
AW: NOT NULL erzeugt keinen Error
Ich habe es nun mit der if schlauife gelöst, da eh auf keine andere Weise Daten in die DB gelangen.
Vielen Dank für deine Hilfe :)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Themen-Optionen
Ansicht
Linear-Darstellung
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.
HTML-Code ist aus .
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:13:22 Uhr.