entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Crear id primary key con db Forge en CodeIgniter3

Buenos Días, tengo un problema y no encuentro el porque de este, pues aparentemente está todo bien. Este código me funcionaba en la version 2.2 de CodeIgniter pero ahora no, estoy creando una tabla y me muestra un error:
código en php:

$this->load->dbforge();
$this->dbforge->add_field("id int NOT NULL AUTO_INCREMENT");
$this->dbforge->add_field("titulo varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL");
$this->dbforge->add_field("descripcion text CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL");
$this->dbforge->add_field("url_noticia varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL");
$this->dbforge->add_key('id', TRUE);
$this->dbforge->create_table('l9');

Error mostrado:

A Database Error Occurred

Error Number: 1075

Incorrect table definition; there can be only one auto column and it must be defined as a key

CREATE TABLE l9 ( id int NOT NULL AUTO_INCREMENT, titulo varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL, descripcion text CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL, url_noticia varchar(255) CHARACTER SET utf8 COLLATE utf8_spanish_ci NOT NULL ) DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci

2 Respuestas

3votos

dairon Puntos17120

Hola @white ya lo resolví y es que en codeigniter en su versión 3 solamente hay que poner:

$this->dbforge->add_field('id');

y el lo interpreta como que es una llave primaria de autoincremento y integer solo poniendole eso, lo encontré en esta parte de su documentación: Crando un campo id primary key para una Tabla
espero le sirva a alguíen que tenga el mismo problema.
Saludos Dairon

2votos

white Puntos75880

intenta definir id como PRIMARY KEY en add_field:

$this->dbforge->add_field("id INT AUTO_INCREMENT PRIMARY KEY NOT NULL");

y removiendo:

$this->dbforge->add_key('id', TRUE);

puede ser tambien que ya tengas una columna con auto_increment en tu tabla l9 y estes intentando crear otra, reviza la estructura de la tabla.


0voto

dairon comentado

@white ese código me funcionó al 100% en la version 2.2 pero para la 3 en especial para el campo de nombre id tiene una forma predefinida

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta