Ошибка при переключении пользователя в mysql-клиенте

Вот обновленная версия запроса Брайана за 2008 год и позже. Он использует INFORMATION_SCHEMA.COLUMNS, добавляет переменные для схемы таблицы и имени таблицы. Тип данных столбца был добавлен в вывод. Включение типа данных столбца помогает при поиске столбца определенного типа данных. Я не добавил ширины столбцов или что-то в этом роде.

Для вывода используется RAISERROR ... WITH NOWAIT, поэтому текст будет отображаться сразу, а не сразу (по большей части) в конце, как PRINT ..

SET NOCOUNT ON;

DECLARE
 @ColumnName sysname
,@DataType nvarchar(128)
,@cmd nvarchar(max)
,@TableSchema nvarchar(128) = 'dbo'
,@TableName sysname = 'TableName';

DECLARE getinfo CURSOR FOR
SELECT
     c.COLUMN_NAME
    ,c.DATA_TYPE
FROM
    INFORMATION_SCHEMA.COLUMNS AS c
WHERE
    c.TABLE_SCHEMA = @TableSchema
    AND c.TABLE_NAME = @TableName;

OPEN getinfo;

FETCH NEXT FROM getinfo INTO @ColumnName, @DataType;

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @cmd = N'IF NOT EXISTS (SELECT * FROM ' + @TableSchema + N'.' + @TableName + N' WHERE [' + @ColumnName + N'] IS NOT NULL) RAISERROR(''' + @ColumnName + N' (' + @DataType + N')'', 0, 0) WITH NOWAIT;';
    EXECUTE (@cmd);

    FETCH NEXT FROM getinfo INTO @ColumnName, @DataType;
END;

CLOSE getinfo;
DEALLOCATE getinfo;

0
задан emix 13 July 2018 в 09:05
поделиться

1 ответ

Вы должны выполнить эту команду из CLI, а не из консоли mysql.

2
ответ дан emix 17 August 2018 в 13:18
поделиться
  • 1
    Теперь я прекрасно работаю. Большое спасибо. И у меня есть еще одно сомнение в том, что я могу войти в этот пользователь в mysql-клиенте на самом сервере. Но не удалось войти в mysql, используя тот же пароль пользователя с клиентских компьютеров (используя верстак). Что может быть решением? – user10041577 13 July 2018 в 09:28
  • 2
    Права доступа . Тот же пользователь может иметь несколько паролей, различающихся по происхождению соединения. – emix 13 July 2018 в 11:58
Другие вопросы по тегам:

Похожие вопросы: