Solución:
Según los documentos
SERIAL es un alias de BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
Por lo tanto, tenga cuidado al crear una referencia a un PK SERIAL, ya que esa columna de referencia debe ser de este tipo exacto.
AUTO_INCREMENT
es un atributo de una columna específica de cualquier tipo numérico (int o float), tanto con signo como sin signo. Cuando se insertan filas, asigna automáticamente números secuenciales, por lo que no tiene que hacerlo (por ejemplo, utilizando LAST_INSERT_ID()
). Ver http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
SERIAL
es un alias que combina fundición de tipo columnaBIGINT
específicamente), AUTO_INCREMENT
, UNSIGNED
y otra atributos para una columna específica (consulte la cita de los documentos a continuación). Ver https://dev.mysql.com/doc/refman/8.0/en/numeric-type-syntax.html
SERIAL es un alias de BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
SERIAL DEFAULT VALUE en la definición de una columna de entero es un alias para NOT NULL AUTO_INCREMENT UNIQUE.
Desde mysql doc
SERIAL es un alias de BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
SERIAL DEFAULT VALUE en la definición de una columna de entero es un alias para NOT NULL AUTO_INCREMENT UNIQUE.
Si no se especifica ningún valor para la columna AUTO_INCREMENT, MySQL asignó números de secuencia automáticamente. También puede asignar explícitamente NULL o 0 a la columna para generar números de secuencia. MySQL no disminuye automáticamente el valor de autoincremento cuando elimina una fila. Las razones son:
- Peligro de integridad de datos dañada (imagine que varios usuarios realizan eliminaciones o inserciones … pueden ocurrir entradas duplicadas o algo peor)
- Pueden ocurrir errores cuando utiliza transacciones o replicación maestro-esclavo