eu tenho uma mesa com
ID INT(16)
StateName VARCHAR(50)
Details MEDIUMTEXT
Quando faço uma inserção na conexão do servidor vinculado:
Insert Into MySQL...tblState (ID, StateName, Details) Values (1,'Alabama','Test')
O ID da linha é definido como 0 em vez de 1.
Se eu inverter a estrutura da tabela para colocar os detalhes antes do nome do estado, para que o MEDIUMTEXT não seja a última coluna e faça a mesma instrução de inserção.
Insert Into MySQL...tblState (ID, Details, StateName) Values (1,'Test','Alabama')
Então a inserção funciona exatamente como deveria.
Este é um bug conhecido ou há uma configuração que preciso alterar para corrigir isso?
Estou usando o driver MySQL ODBC 5.1
Editar: caso isso ajude alguém, aqui estão os resultados de um teste que fiz.
No phpmyadmin:
CREATE TABLE `tblState` (
`StateID` int(11) NOT NULL,
`State` varchar(50) NOT NULL,
`Details` mediumtext NOT NULL,
PRIMARY KEY (`StateID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE `tblState2` (
`StateID` int(11) NOT NULL,
`Details` mediumtext NOT NULL,
`State` varchar(50) NOT NULL,
PRIMARY KEY (`StateID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Do SQL Server sobre o servidor vinculado:
insert into mysql...tblState(StateID,State,Details) values (1,'alabama','test1')
(1 row(s) affected)
select * from mysql...tblState
StateID State Details
----------- -------------------- --------------------
0 alabama test1
(1 row(s) affected)
insert into mysql...tblState2(StateID,Details,State) values (1,'test2','alabama' )
(1 row(s) affected)
select * from mysql...tblState2
StateID Details State
----------- -------------------- --------------------
1 test2 alabama
(1 row(s) affected)
Vou arriscar e dizer que provavelmente há um bug em algum lugar - especialmente devido ao
mediumtext
tipo de dados. Aqui está um pequeno trabalho que fiz, obviamente existem alguns testes adicionais que você pode executar. Aqui está um SQLFiddle para sua referência.DDL
DML
renderiza:
enquanto
renderiza:
Finalmente,
renderiza a saída da tabela 2 na ordem da tabela 1 (como esperado):
AGORA, tendo dito tudo isso, isso foi executado em um servidor MySQL diretamente (não por meio de um link) que é uma versão recente (MySQL 5.5). Talvez você possa executar o conteúdo do violino diretamente em seu servidor através do phpMyAdmin. Isso pode nos ajudar a entender se sua versão do MySQL é o problema ou não.
Você notará que tblState3 preserva a ordem original da tabela problemática enquanto varia a ordem das inserções, apenas para adicionar um pouco de robustez ao experimento.
é uma sintaxe inválida. Usar
dbname.tblState
, ou