a[1][1]
работает должным образом. Вы имеете в виду a11 как первый элемент первой строки? Потому что это будет [0] [0].
Этот обходной путь (просто перечислите все культуры, которые вы хотите использовать в строковом массиве):
private static class ArabicNumeralHelper
{
public static string ConvertNumerals(this string input)
{
if (new string[] { "ar-lb", "ar-SA" }
.Contains(Thread.CurrentThread.CurrentCulture.Name))
{
return input.Replace('0', '\u06f0')
.Replace('1', '\u06f1')
.Replace('2', '\u06f2')
.Replace('3', '\u06f3')
.Replace('4', '\u06f4')
.Replace('5', '\u06f5')
.Replace('6', '\u06f6')
.Replace('7', '\u06f7')
.Replace('8', '\u06f8')
.Replace('9', '\u06f9');
}
else return input;
}
}
Затем используйте метод, для всех строк
вы хотите иметь "центральные арабские цифры" в, как это:
DateTime.Now.ToString().ConvertNumerals();
-121--2907145- Быстрый google нашел этот http://theopensourcery.com/sqlanysomeall.htm
Любой позволяет использовать оператор, отличный от =, в большинстве других случаев (особые случаи для нулей) он действует как IN. С помощью оператора = можно считать IN как ANY.
-121--1052118-Для InnoDB, похоже, работает следующее: создайте новую пустую базу данных, затем переименуйте каждую таблицу по очереди в новую базу данных:
RENAME TABLE old_db.table TO new_db.table;
После этого потребуется изменить разрешения.
Для создания сценариев в оболочке можно использовать одно из следующих значений:
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \
do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
или
for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;
Примечания:
-p
и паролем. Если в базе данных отсутствует пароль, удалите часть -u username -ppassword
. Если в какой-либо таблице имеется триггер, ее нельзя переместить в другую базу данных с помощью указанного выше метода (это приведет к ошибке Trigger в неверной схеме
). Если это так, используйте традиционный способ клонирования базы данных, а затем удалите старую:
mysqldump old_db | mysql, new_db
If у вас есть хранимые процедуры, вы можете скопировать их впоследствии:
mysqldump -R old_db | mysql new_db
При переименовании базы данных в PHPMyAdmin, он создает дамп, затем отбрасывает и воссоздает базу данных с новым именем.
В MySQL Administrator делают следующее:
Три опции:
Создают новую базу данных, снижают сервер, перемещают файлы от одной папки базы данных до другого и перезапускают сервер. Обратите внимание, что это будет только работать, если ВСЕМИ Вашими таблицами будет MyISAM.
Создают новую базу данных, используют CREATE TABLE... КАК операторы, и затем используют, ВСТАВЛЯЮТ... ВЫБЕРИТЕ * операторы FROM.
Использование mysqldump и перезагрузка с тем файлом.
Изменение в каталоге базы данных:
cd /var/lib/mysql/
MySQL Закрытия... Это важно!
/etc/init.d/mysql stop
Хорошо, этот путь не работает на InnoDB или BDB-базы-данных.
база данных Rename:
mv old-name new-name
... или таблица...
cd database/
mv old-name.frm new-name.frm
mv old-name.MYD new-name.MYD
mv old-name.MYI new-name.MYI
Сделанный MySQL
/etc/init.d/mysql start
Restart...
хорошо, этот путь не работает с базами данных InnoDB или BDB. В этом случае необходимо вывести базу данных и повторно импортировать ее.
Вот пакетный файл, который я записал для автоматизации его из командной строки, но этого для Windows/MS-DOS.
Синтаксис является rename_mysqldb базой данных newdatabase-u [пользователь]-p [пароль]
:: ***************************************************************************
:: FILE: RENAME_MYSQLDB.BAT
:: ***************************************************************************
:: DESCRIPTION
:: This is a Windows /MS-DOS batch file that automates renaming a MySQL database
:: by using MySQLDump, MySQLAdmin, and MySQL to perform the required tasks.
:: The MySQL\bin folder needs to be in your environment path or the working directory.
::
:: WARNING: The script will delete the original database, but only if it successfully
:: created the new copy. However, read the disclaimer below before using.
::
:: DISCLAIMER
:: This script is provided without any express or implied warranties whatsoever.
:: The user must assume the risk of using the script.
::
:: You are free to use, modify, and distribute this script without exception.
:: ***************************************************************************
:INITIALIZE
@ECHO OFF
IF [%2]==[] GOTO HELP
IF [%3]==[] (SET RDB_ARGS=--user=root) ELSE (SET RDB_ARGS=%3 %4 %5 %6 %7 %8 %9)
SET RDB_OLDDB=%1
SET RDB_NEWDB=%2
SET RDB_DUMPFILE=%RDB_OLDDB%_dump.sql
GOTO START
:START
SET RDB_STEP=1
ECHO Dumping "%RDB_OLDDB%"...
mysqldump %RDB_ARGS% %RDB_OLDDB% > %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=2
ECHO Creating database "%RDB_NEWDB%"...
mysqladmin %RDB_ARGS% create %RDB_NEWDB%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=3
ECHO Loading dump into "%RDB_NEWDB%"...
mysql %RDB_ARGS% %RDB_NEWDB% < %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=4
ECHO Dropping database "%RDB_OLDDB%"...
mysqladmin %RDB_ARGS% drop %RDB_OLDDB% --force
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
SET RDB_STEP=5
ECHO Deleting dump...
DEL %RDB_DUMPFILE%
IF %ERRORLEVEL% NEQ 0 GOTO ERROR_ABORT
ECHO Renamed database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:ERROR_ABORT
IF %RDB_STEP% GEQ 3 mysqladmin %RDB_ARGS% drop %NEWDB% --force
IF %RDB_STEP% GEQ 1 IF EXIST %RDB_DUMPFILE% DEL %RDB_DUMPFILE%
ECHO Unable to rename database "%RDB_OLDDB%" to "%RDB_NEWDB%".
GOTO END
:HELP
ECHO Renames a MySQL database.
ECHO Usage: %0 database new_database [OPTIONS]
ECHO Options: Any valid options shared by MySQL, MySQLAdmin and MySQLDump.
ECHO --user=root is used if no options are specified.
GOTO END
:END
SET RDB_OLDDB=
SET RDB_NEWDB=
SET RDB_ARGS=
SET RDB_DUMP=
SET RDB_STEP=
MySQL не поддерживает переименование базы данных через ее интерфейс команды в данный момент, но можно переименовать базу данных, если у Вас есть доступ к каталогу, в котором MySQL хранит свои базы данных. Для установок MySQL по умолчанию это обычно находится в каталоге Data в соответствии с каталогом, где MySQL был установлен. Найдите название базы данных, которую Вы хотите переименовать в соответствии с каталогом Data и переименовать его. Переименование каталога могло вызвать некоторые проблемы полномочий все же. Знайте.
Примечание: необходимо остановить MySQL, прежде чем можно будет переименовать базу данных
, я рекомендовал бы создать новую базу данных (использующий имя, которое Вы хотите), и экспортируйте/импортируйте данные, в которых Вы нуждаетесь от старого до нового. Довольно простой.
Используйте эти несколько простых команд:
mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql
Или, чтобы уменьшить количество операций ввода-вывода, используйте следующую команду, предложенную @Pablo Marin-Garcia:
mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase
Я задал вопрос о сбое сервера , пытаясь избежать простоев при восстановлении очень больших баз данных с помощью MySQL Proxy. У меня ничего не получилось, но в конце концов я понял, что мне нужно было ПЕРЕИМЕНОВАТЬ БАЗУ ДАННЫХ, потому что дамп / импорт не подходили из-за размера нашей базы данных.
В MySQL встроена функция ПЕРЕИМЕНОВАТЬ ТАБЛИЦУ, поэтому я написал простой скрипт Python, который сделает эту работу за меня. Я разместил его на GitHub на случай, если он может быть полезен другим.
Я только недавно наткнулся на очень хороший способ сделать это, работает с MyISAM и InnoDB и работает очень быстро:
RENAME TABLE old_db.table TO new_db.table;
Я не помню, где я это читал, но заслуга принадлежит кому-то другому, а не мне.
Можно переименовать все таблицы в базе данных, чтобы они находились в другой базе данных, без необходимости выполнять полный дамп и восстановление.
DROP PROCEDURE IF EXISTS mysql.rename_db; DELIMITER || CREATE PROCEDURE mysql.rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100)) BEGIN SELECT CONCAT('CREATE DATABASE ', new_db, ';') `# create new database`; SELECT CONCAT('RENAME TABLE `', old_db, '`.`', table_name, '` TO `', new_db, '`.`', table_name, '`;') `# alter table` FROM information_schema.tables WHERE table_schema = old_db; SELECT CONCAT('DROP DATABASE `', old_db, '`;') `# drop old database`; END|| DELIMITER ; $ time mysql -uroot -e "call mysql.rename_db('db1', 'db2');" | mysql -uroot
Однако любые триггеры в целевой базе данных не будут работать. Вам нужно сначала отбросить их, а затем воссоздать после переименования.
mysql -uroot -e "call mysql.rename_db('test', 'blah2');" | mysql -uroot ERROR 1435 (HY000) at line 4: Trigger in wrong schema
На самом деле, самый простой ответ - экспортировать старую базу данных, а затем импортировать ее в новую, которую вы ' он создан на замену старому. Конечно, для этого вы должны использовать phpMyAdmin или командную строку.
Переименование и подтасовка базы данных - ПЛОХАЯ ИДЕЯ! НЕ ДЕЛАЙ ЭТОГО. (Если только вы не «хакерский тип», сидящий в подвале матери в темноте и кушающий пиццу, спящий днем.)
У вас будет больше проблем и работы, чем вы хотите.
Итак,
Расширение этого файла - .sql
- phpMyAdmin Дамп SQL - версия 3.2.4
- Хост: localhost - Время создания: 30 июня 2010 г., 12:17. - Версия сервера: 5.0.90 - Версия PHP: 5.2.6
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
/ *! 40101 SET @OLD_CHARACTER_SET_CLIENT = @@ CHARACTER_SET_CLIENT /; / ! 40101 НАБОР @OLD_CHARACTER_SET_RESULTS = @@ CHARACTER_SET_RESULTS /; / ! 40101 НАБОР @OLD_COLLATION_CONNECTION = @@ COLLATION_CONNECTION /; / ! 40101 SET NAMES utf8 * /;
-
mydatab_online
-
user
CREATE ТАБЛИЦА, ЕСЛИ НЕ СУЩЕСТВУЕТ пользователь
(
отметка времени
int (15) НЕ НУЛЬ по умолчанию '0',
ip
varchar (40) NOT NULL по умолчанию '',
файл
varchar (100) NOT NULL по умолчанию '',
ПЕРВИЧНЫЙ КЛЮЧ ( отметка времени
),
КЛЮЧ ip
( ip
),
KEY файл
( файл
)
) ENGINE = MyISAM DEFAULT CHARSET = latin1;
-
пользователя
INSERT INTO user
( отметка времени
, ] ip
, файл
) ЗНАЧЕНИЯ
(1277911052, '999.236.177.116', ''),
(1277911194, '999.236.177.116', '');
Это будет ваш файл .sql. Тот, который вы только что экспортировали.
Найдите его на жестком диске; обычно он находится в / temp
. Выберите пустую базу данных с правильным именем (причина, по которой вы это читаете).
ПРОГОВОРИТЬ: Импорт - GO
Подключите вашу программу к правильной базе данных, введя ее в то, что обычно является файлом configuration.php. Обновите сервер (оба. Почему? Потому что я старожил UNIX , и я так сказал. Теперь ты должен быть в хорошей форме. Если у вас есть дополнительные вопросы, посетите меня в Интернете.