Вопрос по SQL
insert into addresses values (null, 'address', 222);
Пытаемся положить адрес к имени, которого не существует. Получаем ошибку
Error Code: 1452. Cannot add or update a child row: a foreign key constraint fails
Защита работает.
................................................................................
insert into names values (null, 'aaaaa');
insert into addresses values (null, 'bbbbbb', 1);
так сработает
Для работы с базами данных существует ряд как бы нотаций. Во первых имена таблиц в единственном числе address, а не addresses. Во вторых поле с primary key всегда просто id. Не id_name, а просто id. Но это на любителя и имхо. Хотя подобные правила потом очень облегчают жизнь кодерам.
Для меня база данных это просто хранилище и я, как программист, вообще как правило в программах использую персистентный слой, который и базы даннвх строит и sql сам генерирует и за целостьностью данных следит.
SQL как язык знать надо. Имхо. Это стандарт. Хотя бы потому, что на многих фирмах просто запрещено пользоваться какими то тулами. Есть предписаные проги и все. Выдадут db developer и радуйся.
За исключением того, что имеет предефенированное поле с тем же именем.
Стандартное имя поля это соглашение. Если соглашение невозможно технически, то его просто меняют. Но до тех пор, пока нет проблем, нет смысла проблемы придумывать и придумывать исключения-решения этих высосанных из пальцы проблем.
На крайняк можно погуглить. Например здесь
https://www.petefreitag.com/tools/sql_reserved_words_check...
кстати, не сработало. как не срабатывает и это. докумунтированное (говорят)
alter table tablename rename column oldname to newname;
текст сообщения как всегда идиотский. т.е. все равно что его бы вообще не было. возможно, было бы даже лучше.
как народ работает с этими субд? повбивавби (с)
как не срабатывает и это. докумунтированное (говорят)
alter table tablename rename column oldname to newname;
https://mariadb.com/kb/en/alter-table/
Проверяем версию: select version();
кстати, не сработало. как не срабатывает и это. докумунтированное (говорят)
Мир не идеален. Я решаю конкретные проблемы. Если у тебя не получается изменить имя столбца, то можно попробовать. Нужно имя базы данных и сообщение о ошибке. Если нужно восстановить вселенскую справедливость, то пожалуй я для этого слабоват. Рожей не вышел.
на форумах фраз нахватались, или сами составлять такое умеете?
Ок. Я просто хотел сказать, что многие продукты нелогичны или кажутся таковыми при первом использовании. И что я привык просто искать решения таких проблем в инете. Не особо заморачиваясь вопросом, как вообще жить в таких условиях.
Если будет нужна конкретная помощь по SQL, я попробую помочь, чем смогу.
возникла проблема при работе с mysql.
собственно, не SQL касается, но тему не хочу новую открывать.
есть у меня прога, которая связывается с сервером (mariaDB), читает оттуда что-то и показывает, в общем это не важно. она вдруг перестала работать.
использую в C# библиотеку MySQL Connector Net 6.9.11.
_connection = new MySqlConnection(connectionString);
проходит на ура, а
_connection.Open();
бросается прерывание
System.IO.IOException: 'The handshake failed due to an unexpected packet format.'
если запускаю в консоли mysql.exe и соединяюсь с базой - никаких проблем, как и раньше.
что такого могло случиться?
клиент - на моем компе.
как часто случается, стоит позвать на помощь, как проблема тут же сама собой разрулёвывается : )
гоголь все выводил на какие-то SSL проблемы, сертификаты и пр. решил побаловаться с параметрами, и вот, указав просто SSL Mode=None, удалось все решить. видимо, на сервере что-то подкрутили за это время, раньше что-то было по умолчанию, даже слушать и знать не хочу что именно. важно, что все теперь идет замечательно. до следующего раза : )