2016-07-15 11 views
0

Так что это может быть немного расплывчато, но я столкнулся с этим слоем после слоя проблем. Каждое «исправление», которое я нахожу в Google, представляет мне еще одну проблему. Все равно, я купил пакет хостинга Windows, чтобы создать приложение asp.net, поддерживаемое сервером MySQL. Я привык к MSSQL, но это должно быть работоспособным и лучше для open source.Невозможно создать хранимую процедуру с использованием MySQL

Первой проблемой, которую я заметил, была то, что моя (недавно установленная) копия MySQL Workbench с MySQL Server 5.7 не позволит мне подключиться к моей базе данных вообще. Таблицы отказываются загружаться, и меня приветствуют: # 1548 - Невозможно загрузить из mysql.proc. Таблица, вероятно, поврежден

Оттуда я подумал «хорошо, что это нормально, я просто использовать инструмент веб-администратора» который в данном случае является PHPMYADMIN. У меня есть нулевой опыт работы с phpMyadmin в прошлом, но он выглядит нормально и предварительно установлен в этой панели управления. Я начал с создания моих первых 5 таблиц. Это прошло гладко, и теперь у меня есть 5 таблиц в базе данных, у одного из них даже есть некоторые данные, которые я могу просмотреть, запустив «SELECT * FROM Account_Type».

Все кажется хорошим, поэтому я иду, чтобы создать процедуру, которую я хочу использовать, чтобы протестировать мое приложение. Просто процедура, которая вернет строку на основе tinyInt, которую вводит пользователь. Эта процедура выглядит следующим образом:

DROP PROCEDURE IF EXISTS `getAccountTypeName`; 
DELIMITER $$ 
CREATE PROCEDURE `getAccountTypeName`(DimAccountTypeID) 
BEGIN 

DECLARE DimAccountTypeID TinyINT DEFAULT 0 

SELECT AccountTypeName 
FROM Account_Type 
WHERE AccountTypeID = DimAccountTypeID 

END 
$$ 

DELIMITER ; 

Кажется, хорошо для меня (будучи более опытным с MS SQL), но она возвращает ту же ошибку, что моя собственная локальная копия MySQL Workbench сделал! Невозможно загрузить из mysql.proc. Вероятно, таблица повреждена

Все, что я читал в Интернете, указывает на то, что это проблема, когда мне нужно обновить MySQL .... Я понятия не имею, как я обновляю просмотр, поскольку я просто на панели управления Вот. Вместо этого я чувствую, что должна быть какая-то другая проблема, таблицы с данными будут по-прежнему отображаться, и я создал их только вчера, я не вижу, как это может быть повреждено.

Я пытался смотреть на использовании

use mysql; 
show create table mysql.proc; 

, как я видел предложил, но это просто возвращает другую ошибку: # 1044 - Доступ запрещен для пользователя «Birdy» @ «%» в базу данных «MySQL ' (Birdy - мое имя пользователя). Я не знаю, является ли THAT источником проблем, но я могу запускать любой другой запрос без возможности создания процедуры.

Следующая мысль отсюда «эй, если я могу просто заставить MySQL Workbench подключиться и работать, тогда я могу игнорировать панель управления». Это не очень плодотворное или, вот мои попытки запуска некоторых команд обновления: http://i.imgur.com/yG1hKrQ.png (Для этого passsword, я должен использовать мой Windows, один мой MySQL Birdy имени пользователя пароль не уверен, какие ...?)

Реальный вопрос здесь в любом случае - это просто «помощь!». Источником проблемы является «не может создать MySQL-запрос с использованием phpMyAdmin», хотя, надеюсь, моя маленькая история должна помочь диагностировать это. Было бы очень полезно помочь с этими проблемами :)

EDIT: У меня есть mysql_upgrade для запуска, но все равно нет кубиков.Это не решает проблемы, по-прежнему выглядит следующим образом: http://i.imgur.com/NJpnRzw.png

EDIT 2: Так я даю на это сейчас, переключая мой DB к MSSQL и придерживаться того, что я знаю лучше всего. Повторная установка db не помогла, и обновление не было моим веб-хостом. Спасибо за вашу помощь в любом случае ребята

+0

Я думаю, что 'mysql_upgrade' утилита командной строки действительно ваш следующий шаг; Я буду продолжать пытаться заставить это работать. Вы должны использовать «root» пользователя, а пароль - все, что вы выбрали при установке сервера MySQL (это главный пароль, как «sa» на MSSQL). –

+0

Кажется, что-то испорчено. Поскольку это новая установка, наиболее эффективным решением может быть просто очистка всей установки MySQL (в том числе «datadir», где хранятся фактические базы данных на диске) и переустановка. Как это сделать будет зависеть от того, как он был установлен, но, возможно, ваш хостинг-провайдер может помочь. –

ответ

0

Подключения к серверу MySQL как root пользователя, удалить таблицу proc и создать еще один:

CREATE TABLE `proc` (
    `db` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', 
    `name` char(64) NOT NULL DEFAULT '', 
    `type` enum('FUNCTION','PROCEDURE') NOT NULL, 
    `specific_name` char(64) NOT NULL DEFAULT '', 
    `language` enum('SQL') NOT NULL DEFAULT 'SQL', 
    `sql_data_access` enum('CONTAINS_SQL','NO_SQL','READS_SQL_DATA','MODIFIES_SQL_DATA') NOT NULL DEFAULT 'CONTAINS_SQL', 
    `is_deterministic` enum('YES','NO') NOT NULL DEFAULT 'NO', 
    `security_type` enum('INVOKER','DEFINER') NOT NULL DEFAULT 'DEFINER', 
    `param_list` blob NOT NULL, 
    `returns` longblob NOT NULL, 
    `body` longblob NOT NULL, 
    `definer` char(77) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', 
    `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 
    `modified` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', 
    `sql_mode` set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','NOT_USED','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH') NOT NULL DEFAULT '', 
    `comment` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 
    `character_set_client` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 
    `collation_connection` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 
    `db_collation` char(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, 
    `body_utf8` longblob, 
    PRIMARY KEY (`db`,`name`,`type`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Stored Procedures'