Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / MySQL |
![]() ![]() |
Users Member Откуда: Сообщений: 341 |
Цензурных слов осталось мало, но попробую. MySQL 5.5.28 and Toad. Был некий код. Приводить его смысла нет, и в нем был комментарий --- вставка Код этот выдавал ошибку, хотя я перепроверил все, что только было можно. Причем красным было подсвечено все на свете. На стадии "я убью тебя, лодочник", пришло в голову скопировать процедуру в другое окно. По счастию - рядом был открыт dbForce, русскую версию которого использую для бекапов, коих в самом Toad найти не могу. И этот dbForce мне подсветил именно три дефиса. И все, сразу заработало... Друзья! Товарищи! Сукины дети! Да как же можно так жить?! :( Да как же можно не выдавать ошибку осмысленную?! Уважаемый модератор. Не бейте меня по голове плюсометом, а добавьте, плиз, это в фак с "грабли". |
7 дек 12, 00:14 [13591168] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
По-моему, даже дети знают, что после двух тире следует ставить пробел... |
7 дек 12, 00:29 [13591209] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38692 |
Да, пробел после двух тире даже документирован. Плюсометом бить не буду, но давайте все будущие предложения по темам для FAQ писать в этом топике. Просто банально потому, что если будет множество топиков, то часть я потеряю. |
7 дек 12, 00:44 [13591259] Ответить | Цитировать Сообщить модератору |
Users Member Откуда: Сообщений: 341 |
Не вопрос. Назовите его: "для тех, кто переходит с MS SQL или "это невозможно понять, это надо запомнить". 0. Точка с запятой в конце инструкции - обязательна. Однако при выполнении из командной строки сразу многих инструкций - точка с запятой заменяется на что-нибудь другое, иначе каждая инструкция сразу идет на сервер. для замены служит инструкция DELIMETER. 1. Alter procedure не дает нам изменить всю процедуру, а лишь ее метаданные. для внесения изменений в код процедуру нужно дропнуть и создать заново. 2. Для колонок внешнего ключа обязательна строгая типизация. Так же можно использовать допопцию UNSIGNED, которая даст нам только целые числа, но за счет этого увеличит разрядность. 3. Теоретически можно писать просто INT. На практике - лучше указывать его разрядность, INT(11). 3. Переименовать колонку, по которой сделан ключ - нельзя. Только полное удаление и создание заново. 4. IF требует THEN. 5. Вместо raiserror - используете SIGNAL SQLSTATE '45000'; где 45000 - неизвестная пользовательская ошибка. 6. Бекап - это не бекап. Т.е. не привычное нам некое бинарное файло, а просто скрипт создания базы, в который полностью прописаны данные в том числе. Простыми инсертами. 7. Для создания/восстановления бекапов лично я использую dbForce russian. Там это просто и удобно. Однако для разработки использовать русское окружение - кошмарно, а английская версия не дает сделать нормальный бекап, если ее не купишь. 8. Как среда разработки мне лично более всего подошел Toad - он бесплатен и дает настроить среду под те же хотки, что и Management studio. |
||
7 дек 12, 11:20 [13592753] Ответить | Цитировать Сообщить модератору |
Users Member Откуда: Сообщений: 341 |
Akina, Дети - может и знаю. А те, кто двадцать лет работал в ms sql - знают, что ----------------- - нет никаких проблем написать. А еще они, ms sqlщики, знают, что ошибка им будет подсвечена не по всей процедуре, и гадай, где же она, а именно в том месте, где написано неверно. |
7 дек 12, 11:22 [13592777] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38692 |
Users, 2. Про UNSIGNED написано слишком неточно. 3. Про разрядность в скобках - миф. 3. Уточните, нужно удаление/создание ключа или колонки? 7. Чем именно кошмарно? (я не отрицаю, просто непонятно). 8. Что такое Management studio? |
7 дек 12, 13:22 [13593964] Ответить | Цитировать Сообщить модератору |
Users Member Откуда: Сообщений: 341 |
miksoft, 1. я и не отрицаю, что пока еще чайник, если что. :) 2. Про разрядность в скобках - стопроцентно натолкнулся на то, что одна из программ написание просто Id_Noun int - воспринимает как ошибку. С десяток их перепробовал. 3. Мне нужно было просто переименовать колонку Id_Nnoun, опечатка в ней. В Ms sql просто нажимается кнопка f2 и пишется новое название. Здесь мне сказали: не могу! причем сказали как обычно error of rename - и гадай сам, почему это. Не исключаю, кстати, что это особенность Toad for MySQL. 7. Да это личная особенность, с русскими версиями программ вообще не работаю. 8. Менеджмент студия, коллеги - это ВЕЩЬ. :) Среда разработки ms sql. Тоже не без недостатков, конечно, но многое из того, что в mysql нельзя, там - можно и очень легко. |
7 дек 12, 13:36 [13594110] Ответить | Цитировать Сообщить модератору |
Users Member Откуда: Сообщений: 341 |
miksoft, 1. я и не отрицаю, что пока еще чайник, если что. :) 2. Про разрядность в скобках - стопроцентно натолкнулся на то, что одна из программ написание просто Id_Noun int - воспринимает как ошибку. С десяток их перепробовал. 3. Мне нужно было просто переименовать колонку Id_Nnoun, опечатка в ней. В Ms sql просто нажимается кнопка f2 и пишется новое название. Здесь мне сказали: не могу! причем сказали как обычно error of rename - и гадай сам, почему это. Не исключаю, кстати, что это особенность Toad for MySQL. 7. Да это личная особенность, с русскими версиями программ вообще не работаю. 8. Менеджмент студия, коллеги - это ВЕЩЬ. :) Среда разработки ms sql. Тоже не без недостатков, конечно, но многое из того, что в mysql нельзя, там - можно и очень легко. |
7 дек 12, 13:39 [13594135] Ответить | Цитировать Сообщить модератору |
miksoft Member Откуда: Сообщений: 38692 |
0. Про точку с запятой тоже не совсем точно. Она нужна не всегда. Хотя, вроде бы, никогда не мешает.
Хотя, конечно, соглашусь, что MySQL (и окружающая экосистема) сильно уступает лидирующим СУБД. |
||||
7 дек 12, 13:44 [13594199] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20960 |
Неверно. Символ разделения команд (Delimiter) - действительно обязателен. Точка с запятой - всего лишь символ-разделитель по умолчанию. Однако никто не запрещает настроить другой символ-разделитель (или группу символов, которая будет разделителем) и использовать его. mysql> delimiter @@ mysql> create table test (id int)@@ Query OK, 0 rows affected (0.06 sec) mysql> insert into test values (1),(3),(2)@@ Query OK, 3 rows affected (0.02 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from test@@select id,5-id id2 from test order by id desc@@ +------+ | id | +------+ | 1 | | 3 | | 2 | +------+ 3 rows in set (0.00 sec) +------+------+ | id | id2 | +------+------+ | 3 | 2 | | 2 | 3 | | 1 | 4 | +------+------+ 3 rows in set (0.02 sec) mysql> drop table test@@ Query OK, 0 rows affected (0.01 sec) mysql> delimiter ; mysql> |
||
7 дек 12, 15:02 [13595069] Ответить | Цитировать Сообщить модератору |
javajdbc Member Откуда: Montreal Сообщений: 17715 |
предлагаю вот этот мой пост... https://www.sql.ru/forum/actualthread.aspx?tid=740218&pg=1&mid=8434456#8434456 а также недавние эксперименты bochkov'a выделить в некий ФАК -- типа -- специальные случаи использования переменных. Кроме переменных, имеет смысл перечислить все стандартные методы работы со списками в мускл, FIND_IN_SET, LOCATE, etc.... в контексте задач типа как заставить работать такой код: ...WHERE t.id in ('3,4,5,6,7').... |
16 дек 12, 23:37 [13640230] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Progrom Member Откуда: Сообщений: 2 |
Ну 3 тире это круто ) А мне кажется что комментарий типа "-- коммент" вообще лучше не пользовать ибо не везде работает. Добавлял дамп через phpmyadmin и всё с ошибками (хотя там было верно "-- проблем надпись"), а вот например в workbench всё прекрасно поставилось. Этот инцидент кстати вызвал не хило отвращение от комментария данного вида. Тем более что: # Он не единственный /* НУ блин Совсем, со- Всем не единственный */ |
5 дек 14, 15:29 [16956392] Ответить | Цитировать Сообщить модератору |
JeStone Member Откуда: Сообщений: 248 |
Что вам мешало в том же
В MS SQL вместо GROUP_CONCAT используются всевозможные трюки типа SELECT empName, projIDs = replace ((SELECT Surname AS [data()] FROM project_members WHERE empName = a.empName ORDER BY empName FOR xml path('')), ' ', REQUIRED SEPERATOR) FROM project_members a WHERE empName IS NOT NULL GROUP BY empName Но вы же из-за этого не кричите на каждом шагу какой он плохой? И чем же по вашему SIGNAL SQLSTATE хуже чем
Тем, что не привычно?
Та самая вещь, IntelliSense которой без лишних плагинов вызывает стойкое желание убивать. Особенно меня "радует" поведение по умолчанию, когда при нажатии пробела она авто-дополняет код. |
||||||||
5 дек 14, 16:10 [16956733] Ответить | Цитировать Сообщить модератору |
JeStone Member Откуда: Сообщений: 248 |
вот чорд, обманул Progrom, я и не заметил, что между сообщениями аж 2 года =( |
5 дек 14, 16:11 [16956742] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Arhat109 Member Откуда: из СССР Сообщений: 3428 |
Добавить тему в FAQ -- новые фичи и плюшки в форках. А то вот вернулся к базам данных, а тут такое творится .. :) |
19 фев 18, 13:07 [21201617] Ответить | Цитировать Сообщить модератору |
retvizan Member Откуда: Сообщений: 209 |
в доке марии есть сравнение последних стабильных версий https://mariadb.com/kb/en/library/incompatibilities-and-feature-differences-between-mariadb-102-and-mysql-57/ |
||
19 фев 18, 15:45 [21202359] Ответить | Цитировать Сообщить модератору |
Все форумы / MySQL | ![]() |