Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Crear tabla Mysql vs SQLServer

Estas en el tema de Crear tabla Mysql vs SQLServer en el foro de Bases de Datos General en Foros del Web. Hola a todos :) Sin entrar en detalles mayores, estoy pasándome de trabajar mi aplicación de MySql a SQLServer (por razones muy obligadas) y todo ...
  #1 (permalink)  
Antiguo 18/11/2015, 08:40
Avatar de paula23andrea  
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 11 años, 5 meses
Puntos: 1
Pregunta Crear tabla Mysql vs SQLServer

Hola a todos :)

Sin entrar en detalles mayores, estoy pasándome de trabajar mi aplicación de MySql a SQLServer (por razones muy obligadas) y todo es desde ubuntu. La cuestión es que el esquema generado para sql presenta un error, y quisiera saber si alguno conoce la causa y solución.

en MySql

Código MySQL:
Ver original
  1. CREATE TABLE User (id INT AUTO_INCREMENT NOT NULL, username VARCHAR(255) NOT NULL, username_canonical VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, email_canonical VARCHAR(255) NOT NULL, enabled TINYINT(1) NOT NULL, salt VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, last_login DATETIME DEFAULT NULL, locked TINYINT(1) NOT NULL, expired TINYINT(1) NOT NULL, expires_at DATETIME DEFAULT NULL, confirmation_token VARCHAR(255) DEFAULT NULL, password_requested_at DATETIME DEFAULT NULL, roles LONGTEXT NOT NULL COMMENT \'(DC2Type:array)\', credentials_expired TINYINT(1) NOT NULL, credentials_expire_at DATETIME DEFAULT NULL, nombres VARCHAR(255) DEFAULT NULL, apellidos VARCHAR(255) DEFAULT NULL, codigoUsuario VARCHAR(255) DEFAULT NULL, foto VARCHAR(255) DEFAULT NULL, iniciales VARCHAR(255) DEFAULT NULL, google_id VARCHAR(255) DEFAULT NULL, google_access_token VARCHAR(255) DEFAULT NULL, UNIQUE INDEX UNIQ_2DA1797792FC23A8 (username_canonical), UNIQUE INDEX UNIQ_2DA17977A0D96FBF (email_canonical), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB

En SQLServer se divide en varias querys

Código SQL:
Ver original
  1. CREATE TABLE [USER] (id INT IDENTITY NOT NULL, username NVARCHAR(255) NOT NULL, username_canonical NVARCHAR(255) NOT NULL, email NVARCHAR(255) NOT NULL, email_canonical NVARCHAR(255) NOT NULL, enabled BIT NOT NULL, salt NVARCHAR(255) NOT NULL, password NVARCHAR(255) NOT NULL, last_login DATETIME2(6), locked BIT NOT NULL, expired BIT NOT NULL, expires_at DATETIME2(6), confirmation_token NVARCHAR(255), password_requested_at DATETIME2(6), roles VARCHAR(MAX) NOT NULL, credentials_expired BIT NOT NULL, credentials_expire_at DATETIME2(6), nombres NVARCHAR(255), apellidos NVARCHAR(255), codigoUsuario NVARCHAR(255), foto NVARCHAR(255), iniciales NVARCHAR(255), google_id NVARCHAR(255), google_access_token NVARCHAR(255), deleted_at DATETIME2(6), PRIMARY KEY (id))
  2.  
  3. CREATE UNIQUE INDEX UNIQ_2DA1797792FC23A8 ON [USER] (username_canonical) WHERE username_canonical IS NOT NULL
  4.  
  5. CREATE UNIQUE INDEX UNIQ_2DA17977A0D96FBF ON [USER] (email_canonical) WHERE email_canonical IS NOT NULL

y estos son los errores que me salen al correrlo en SQLServer

Error An exception occurred while executing 'CREATE UNIQUE INDEX UNIQ_2DA1797792FC23A8 ON [User] (username_canonical) WHERE username_canonical IS NOT NULL':

SQLSTATE[HY000]: General error: 1935 General SQL Server error: Check messages from the SQL Server [1935] (severity 16) []


[Doctrine\DBAL\Driver\PDOException]
SQLSTATE[HY000]: General error: 3903 General SQL Server error: Check messages from the SQL Se
rver [3903] (severity 16) []


[PDOException]
SQLSTATE[HY000]: General error: 3903 General SQL Server error: Check messages from the SQL Se
rver [3903] (severity 16) []


Agradezco si alguien es multiDBA o sabe cómo podría solucionarlo

Gracias!
  #2 (permalink)  
Antiguo 18/11/2015, 08:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Crear tabla Mysql vs SQLServer

El error que tienes es que el create index no lleva where, te recomiendo buscar la sintaxis del create index para sql server en google....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 18/11/2015, 09:05
Avatar de paula23andrea  
Fecha de Ingreso: noviembre-2012
Mensajes: 38
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Crear tabla Mysql vs SQLServer

Eso era, ya había buscado información pero decían que era algo por la restricción de NOT NULL.

Realmente es código generado por Doctrine, que lee el esquema ORM y lo genera según el motor de base de datos que tenga configurado. debe ser algún bug.

Muchisimas gracias!!
__________________
Suerte!!

Etiquetas: access, mysql, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:34.