table_exists () - Methode funktioniert möglicherweise nicht ordnungsgemäß

Ich fange an, schreiben Sie eine einfache Model-Klasse mit codeigniter 2.1.0. Alles, was ich will, es jetzt zu tun ist, erstellen und löschen des MySQL-Tabelle es darstellt. Hier ist der code:

<?php

    class Users_model extends CI_Model {

        public function createTable(){

            if( $this->db->table_exists('users') == FALSE ){

                $query = "CREATE TABLE users(
                        id SERIAL PRIMARY KEY,
                        email  VARCHAR(52) NOT NULL check(email <> ''),
                        UNIQUE (email)
                        )ENGINE = InnoDB;";

                $this->db->query($query);

            }

        }

        public function deleteTable(){

            if( $this->db->table_exists('users') ){

                $query = "DROP TABLE users;";

                $this->db->query($query);

            } else {

                echo "users not found <br />";

                $tables = $this->db->list_tables();
                foreach ($tables as $table)
                {
                    echo $table."<br />";
                }
            }

        }


    }

?>

- Und dies ist der code den ich ausführen in der main-Klasse:

$this->load->model('users_model');
$this->users_model->deleteTable();
$this->users_model->createTable(); 

Dem ersten Lauf ist schön und gut. Die Tabellen erstellt werden, einfach nur gut. Aber dann, wenn ich es wieder laufen, bekomme ich die Ausgabe:

users not found
users

Bei weiterer Betrachtung erkenne ich table_exists() kehrt nie zurück TRUE. var_dump($this->db->table_exists('users')); zurück bool(false).

So, mache ich etwas falsch? Dies ist so einfach wie es wird, kopieren eingefügt werden aus der Dokumentation. Google nicht wieder alles rund, und ein C-Programmierer, meine Einstellung ist immer "Wenn es ein bug ist, gehört es Ihnen. (Richard Stallman ist nie falsch)"... Aber da Herr Stallman hat das wenig zu tun, es gibt eine Möglichkeit.

TL;DR

Warum table_exists('users') im obigen code gibt nie zurück TRUE auch wenn list_tables() zurück 'Benutzer';

  • was bedeutet var_dump($this->db->table_exists('users')); sagen?
  • Danke, jetzt können wir behaupten, es ist in der Tat return bool(false). Was kommt als Nächstes 😛
  • ok gut... sieht gut aus. bist du sicher, dass (direkt auf dem mysql-server, vielleicht mit Hilfe von phpMyAdmin), dass der Benutzer-Tabelle nicht existiert (in der richtigen Datenbank) ? scheint seltsam..
  • Die Tabelle gibt es, phpMyAdmin und list_tables() beide übereinstimmen, dass die Tabelle gibt es und es nennt sich "Benutzer". Ich überprüfte für Leerzeichen vor und nach, setzen Sie den Namen durch eine ascii zu hex. Weiß nicht, wo das problem sein könnte.
InformationsquelleAutor whtlnv | 2012-02-28
Schreibe einen Kommentar