Я создаю таблицы:Почему mysql меняет мой код?
CREATE TABLE `table1` (
`idtable1` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idtable1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `table2` (
`idtable2` int(11) NOT NULL AUTO_INCREMENT,
`idtable1` int(11) DEFAULT NULL,
`table2col1` int(11) DEFAULT NULL,
`table2col2` int(11) DEFAULT NULL,
PRIMARY KEY (`idtable2`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
я создать представление:
CREATE VIEW `view1` AS
select t2.*
from table1 t1, table2 t2
where t1.idtable1 = t2.idtable1
когда Скомпилируйте MySQL изменить мой код:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `view1` AS
select
`t2`.`idtable2` AS `idtable2`,
`t2`.`idtable1` AS `idtable1`,
`t2`.`table2col1` AS `table2col1`,
`t2`.`table2col2` AS `table2col2`
from
(`table1` `t1`
join `table2` `t2`)
where
(`t1`.`idtable1` = `t2`.`idtable1`)
Есть ли способ избежать этого?
вот другой пример, нет ответа: Why is mysql rewriting my view queries?
MySQL добавляет ненужные скобки и поставить код на одной строке.
Даже при использовании правильного синтаксиса mysql измените представление, добавляя ненужные круглые скобки.
Оригинал:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `view2` AS
select
`t2`.`idtable2` AS `idtable2`,
`t2`.`idtable1` AS `idtable1`,
`t2`.`table2col1` AS `table2col1`,
`t2`.`table2col2` AS `table2col2`
from
`table1` `t1`
left join `table2` `t2` on `t1`.`idtable1` = `t2`.`idtable1`
Составитель:
CREATE
ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `view2` AS
select
`t2`.`idtable2` AS `idtable2`,
`t2`.`idtable1` AS `idtable1`,
`t2`.`table2col1` AS `table2col1`,
`t2`.`table2col2` AS `table2col2`
from
(`table1` `t1`
left join `table2` `t2` ON ((`t1`.`idtable1` = `t2`.`idtable1`)))
Это переписывает его в правильный SQL. – Robbert
Код эквивалентен. Удивительно, что MySQL использует * неправильный * SQL для перезаписи - предложение 'where' должно быть предложением' on'. Фактически, вы должны просто написать исходное представление, используя правильный синтаксис 'join'. –
моя проблема в том, что даже при использовании правильного формата mysql меняет вид, добавляя круглые скобки и новые строки. Я всегда использовал sql-сервер, и это никогда не случается. – quimmo